C# 使用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的语法无效,因为

我在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列表中的所有元素都是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;