2009-12-11 30 views
3

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 }; 

回答

14

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

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

嗨,约翰,我想问问题。是否有可能选择重复的行键和值? – altandogan 2014-09-22 07:29:28

+0

@ user990513:好的,只需在'select'子句中选择你想要的内容... – 2014-09-22 08:50:51

0

大厦@乔恩飞碟双向的回答有‘一个班轮’的替代方案,返回重复值,而不仅仅是键:

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