Tuesday, June 5, 2012

Дубли объектов в коллеции

Получилось написать довольно полезный запрос на LINQ для выявления дублированных объектов в коллекции.
 var duplicates = from addr in Addresses
 group addr by new {addr.param1, addr.param2}
 into grp
 where grp.Count() > 1
 select new {grp.Key.param1, grp.Key.param2};
Addresses - это List<Address>, коллекция объектов типа адрес. У объекта есть 2 параметра по которым можно определить уникальность. Для группировки по нескольким параметрам используется такая конструкция:
group addr by new {addr.param1, addr.param2}
 В переменную duplicates попадет коллекция объектов с типом  <Anonymous Type> и парой значений addr.param1, addr.param2.