使用Linq进行分组并计数

174

如何在Linq(VB.NET)中编写此查询?

 select B.Name
 from Company B
 group by B.Name
 having COUNT(1) > 1

1
可能是 https://dev59.com/f0nSa4cB1Zd3GeqPKhD_ 的重复问题。 - Michael Freidgeim
3个回答

371

像这样:

from c in db.Company
group c by c.Name into grp
where grp.Count() > 1
select grp.Key

或者,使用方法语法:

Company
    .GroupBy(c => c.Name)
    .Where(grp => grp.Count() > 1)
    .Select(grp => grp.Key);

34
感谢提供这两种语法形式!:D - Jess
感谢您提供的解决方案。 - Sudhanshu Pal
简单而准确,谢谢。 - Mohammed Mohammed

7

如果有人想在VB中实现这个功能(就像我一样并且找不到任何东西),可以参考以下方法:

From c In db.Company 
Select c.Name Group By Name Into Group 
Where Group.Count > 1

1
我觉得很难理解为什么在VB中Group BySelect子句之后。 - Arvin

-2
下面的解决方案可能会对您有所帮助。
var unmanagedDownloadcountwithfilter = from count in unmanagedDownloadCount.Where(d =>d.downloaddate >= startDate && d.downloaddate <= endDate)
group count by count.unmanagedassetregistryid into grouped
where grouped.Count() > request.Download
select new
{
   UnmanagedAssetRegistryID = grouped.Key,
   Count = grouped.Count()
};

这与问题有何关联? - Gert Arnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接