2015-04-19 2 views
0

У меня есть следующий код, написанный для поиска общих объектов в списке объектовC# и LINQ - конвертировать IGrouping в список

https://dotnetfiddle.net/gCgNBf

............... ...............

var query = setOfPersons 
      .SelectMany(l => l.Select(l1 => l1)) 
      .GroupBy(p => p.Id) 
      .Where(g => g.Count() == setOfPersons.Count); 

После этого мне нужно преобразовать «запрос» в список «Person» объектов (список), чтобы достичь чего-то еще.

Я попытался с помощью "ToList()" ... Но он говорит:

"не может преобразовать IGrouping в список".

Может кто-нибудь помочь мне исправить это?

+1

проверить этот ответ http://stackoverflow.com/questions/8521025/how-to-get-values-from-igrouping –

ответ

9

Посмотрев на свой код, кажется, что вы пытаетесь получить список людей, которые существуют в каждом списке. Если да, то вы можете использовать следующий запрос:

var query = setOfPersons 
    .SelectMany(l => l.Select(l1 => l1)) 
    .GroupBy(p => p.Id) 
    .Where(g => g.Count() == setOfPersons.Count) 
    .Select(x=>x.First())    // Select first person from the grouping - they all are identical 
    .ToList(); 

Console.WriteLine("These people appears in all set:"); 

foreach (var a in query) 
{ 
    Console.WriteLine("Id: {0} Name: {1}", a.Id, a.Name); 
} 

Здесь вы можете выбрать только один элемент из каждой группы, потому что все они одинаковы.

+0

Я не знаю, как вас достаточно поблагодарить! ты спас мой день! Thanx миллион! –

Смежные вопросы