2009-12-11 38 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());