C#Linq找到重复的行

Name City Joe Houston Jerry London Alex Houston Jerry London 

如何使用LINQ返回重复行

SQL

 SELECT name, city, count(*) FROM collection GROUP BY name,city HAVING count(*) > 1 

我试了一下

 var qry = from m in context.Collections group m by new { m.city, m.name } into grp select new { rp = grp.Count() > 2 }; 

你需要一个地方,而不是一个选择:

 var qry = from m in context.Collections group m by new { m.city, m.name } into grp where grp.Count() > 1 select grp.Key; 

基于@Jon Skeet的回答,使用“ 单线 ”替代方案,返回重复值,而不仅仅是键:

 var duplicates = db.Collections.GroupBy(a => new { m.city, m.name }) .Where(a => a.Count() > 1) .SelectMany(a => a.ToList());