我在MSSQL服务器MDF文件中有7个字段的表,用于导入CSV文件,需要为它们生成少量报告。
我使用EF和linq从C#访问数据库。
是否可以,以及如何执行类似于这个mysql查询的linq查询?
SELECT f1, f2, f3, f4 FROM tbl
GROUP BY f1
HAVING COUNT(f1) > 10
我找到了SQL Server - GROUP BY on one column,但它是经典的SQL,作为初学者,我无法将其翻译为Linq。
任何帮助将不胜感激......
答案 0 :(得分:1)
如您引用的文章中所述,SQL的语法无效,因为并非选择列表中的所有元素都是GROUP BY子句的一部分。
如果您的意图如下:
SELECT f1, f2, f3, f4 FROM tbl
GROUP BY f1, f2, f3, f4
HAVING COUNT(f1) > 10
然后等效的LINQ是:
var result = tbl.GroupBy(a => new {a.f1, a.f2, a.f3, a.f4}).Where(grp => grp.Count() > 10).Select(group => group.Key);
或者
var result =
from a in tbl
group a by new { a.f1, a.f2, a.f3, a.f4 } into grp
where grp.Count() > 10
select grp.Key;