user215675
user215675

Reputation: 5181

Finding duplicate row using Linq

Person

Name        City

Joe         Houston   
Jerry       London    
Alex        Houston   
Jerry       London    

How to return duplicate row using LINQ like

Sql

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

I tried something

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

Upvotes: 3

Views: 7943

Answers (2)

Building on @Jon Skeet's answer with a "one liner" alternative that returns the duplicate values, not just the keys:

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

Upvotes: 1

Jon Skeet
Jon Skeet

Reputation: 1499780

You need a where, not a select:

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

Upvotes: 14

Related Questions