2

オブジェクトのリストで共通のオブジェクトを見つけるために、次のコードを記述しました

https://dotnetfiddle.net/gCgNBf

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

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

その後、「クエリ」を「Person」オブジェクトのリスト ( List ) に変換して、別のことを達成する必要があります。

「ToList()」を使ってみました...しかし、それは言う:

" IGrouping をリストに変換できません ".

誰かがそれを修正するのを手伝ってくれますか?

4

1 に答える 1

17

コードを見ると、達成しようとしているのは、各リストに存在する人のリストを取得することです。その場合は、次のクエリを使用できます。

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);
}

ここでは、各グループから 1 つの項目のみを選択します。これらはすべて同一であるためです。

于 2015-04-19T11:07:33.250 に答える