我正在尝试在 EF 中编写查询以获取记录数。
var count = await _context.Programs.Where(a=>a.StudentId == request.Id)
.Where(b => b.Phase == 'Started').CountAsync();
但是,它给出了以下错误。我将相位定义为字符串
字符文字中的字符过多 [netreact]csharp(CS1012)
另外,我如何扩展“已开始”或“保留”的查询 [Phase in ('Started','Hold')]
对 1 个字符的字符使用单引号 ' ' 例如 'z' 或 'a'
对多字符的字符串使用双引号 " " 例如 "test"
所以请将其更改为如下
var count = await _context.Programs.Where(a=>a.StudentId == request.Id)
.Where(b => b.Phase == "Started").CountAsync();
你也可以结合你的条件如下
var count = await _context.Programs.Where(a=>a.StudentId == request.Id && a.Phase == "Started" ).CountAsync();
扩展到 Hold 和 Started
var count = await _context.Programs.Where(a=>a.StudentId == request.Id)
.Where(b => b.Phase == "Started" || b.Phase == "Hold").CountAsync();
引用 Mohamed Adel 的回答,您也可以像这样将两个查询组合在一个查询中
var count = await _context.Programs.Where(a=>a.StudentId == request.Id &&( a.Phase == "Started" || a.Phase == "Hold")).CountAsync();
或更好
var count = await _context.Programs.CountAsync(a=>a.StudentId == request.Id &&(a.Phase == "Started" || a.Phase == "Hold"));