如果我有一个包含标题列和包含 1 或 NULL 的 3 位列(f1、f2、f3)的表,我将如何编写 LINQ 以返回标题以及包含 1 的每个位列的计数?我正在寻找与此 SQL 查询等效的内容:
SELECT title, COUNT(f1), COUNT(f2), COUNT(f3) FROM myTable GROUP BY title
我正在寻找“最好”的方法来做到这一点。当你查看底层 SQL 时,我提出的版本会浸入表 4 次,所以它太慢了。
如果您想坚持使用 LINQ 查询并使用匿名类型,则查询可能如下所示:
var query =
from r in ctx.myTable
group r by r.title into rgroup
select new
{
Title = rgroup.Key,
F1Count = rgroup.Count(rg => rg.f1 == true),
F2Count = rgroup.Count(rg => rg.f2 == true),
F3Count = rgroup.Count(rg => rg.f3 == true)
};
诀窍是要认识到您想要计算 true 字段的数量(它被映射为可为空的布尔值),您可以使用 Count 运算符和谓词来完成此操作。有关 LINQ 组运算符的更多信息,请参见此处:标准 LINQ 运算符
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)