Linq2Entites Count(),条件是bool不能像“我认为它会”那样工作

本文关键字:我认为它会 工作 Count 条件 不能 bool Linq2Entites | 更新日期: 2023-09-27 17:53:26

给定以下非常简单的linq语句

vm.VerifiedGroups = db.ReportGroups.Count(g => g.Verified);

vm.VerifiedGroups = db.ReportGroups.Count(g => g.Verified == true);

其中Verified是bool,我得到一个异常说这是不支持linq-2实体?

错过了一些非常简单的东西-或者我应该选择一个:

a)
vm.VerifiedGroups = db.ReportGroups.Where(g => g.Verified).Count();

b)
vm.VerifiedGroups = db.ReportGroups.ToList().Count(g => g.Verified);

这两种方法都可以(我的列表只有30-50个长,所以ToList不是问题)。

Linq2Entites Count(),条件是bool不能像“我认为它会”那样工作

你没有错过任何东西。Linq to entities不支持带谓词的计数。参见msdn文章支持和不支持的LINQ方法(LINQ到实体)

是的,您应该选择第一个选项,因为ToList()将执行查询并将所有实体放入内存:

vm.VerifiedGroups = db.ReportGroups.Where(g => g.Verified).Count();

即使你没有很多记录在你的ReportGroups表-你为什么要做一些事情,这是较慢的,并使用更多的pc,数据库和网络资源?比较传输一个整数值与传输50个ReportGroup实体的所有字段,从DataReader创建。net对象(并保持连接打开),迭代创建的列表,对每个DataReader实体执行谓词方法。

我会选择第一个选项,因为首先不会将所有记录用于计算计数。在第二个选项中,ToList方法将带来数据并对其应用count。

vm.VerifiedGroups = db.ReportGroups.Where(g => g.Verified).Count();
相关文章: