2015-04-19 24 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); 

在那之後,我需要「查詢」轉換爲「人」的對象(表)的列表,以實現別的東西。

我試着用「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

我不知道如何感謝你足夠!你救了我的一天!感謝一百萬! –