C# 使用linq仅按一个字段对表进行分组
我在MSSQL server MDF文件中有一个表,其中包含7个字段,用于导入CSV文件,并且需要为它们生成一些报告 我正在用C#的EF和linq访问数据库 是否可能,以及如何执行类似于此mysql查询的linq查询C# 使用linq仅按一个字段对表进行分组,c#,sql,sql-server,linq,C#,Sql,Sql Server,Linq,我在MSSQL server MDF文件中有一个表,其中包含7个字段,用于导入CSV文件,并且需要为它们生成一些报告 我正在用C#的EF和linq访问数据库 是否可能,以及如何执行类似于此mysql查询的linq查询 SELECT f1, f2, f3, f4 FROM tbl GROUP BY f1 HAVING COUNT(f1) > 10 我发现了,但它是经典的SQL,作为一个初学者,我无法将其转换为Linq 如有任何帮助,我们将不胜感激。如您引用的文章所述,SQL的语法无效,因为
SELECT f1, f2, f3, f4 FROM tbl
GROUP BY f1
HAVING COUNT(f1) > 10
我发现了,但它是经典的SQL,作为一个初学者,我无法将其转换为Linq
如有任何帮助,我们将不胜感激。如您引用的文章所述,SQL的语法无效,因为并非select列表中的所有元素都是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;