2014-10-01 64 views
1

我有7个字段在MSSQL服务器MDF文件导入CSV文件,并需要为他们生成几个报告的表。linq分组表只有一个字段

我使用C#和EF和LINQ访问数据库。

是否有可能,以及如何执行类似于这个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。

任何帮助,将不胜感激......

回答

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;