如何使用 EF 获取记录数

问题描述 投票:0回答:2

我正在尝试在 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')]

entity-framework
2个回答
1
投票

对 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();

0
投票

扩展到 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"));
© www.soinside.com 2019 - 2024. All rights reserved.