質問

私はList<List<int>>を持っています。私は、各intは一意であるList<int>に変換したいと思います。誰もがこの使用LINQにエレガントな解決策を持っていた場合、私は思っていた。

私は連合のメソッドを使用できるようにしたいと思いますが、それは新しいリスト<>毎回作成されます。だから私はこのような何かを行うことを避けるしたいと思います:

List<int> allInts = new List<int>();

foreach(List<int> list in listOfLists)
   allInts = new List<int>(allInts.Union(list));

任意の提案ですか?

ありがとうございます。

役に立ちましたか?

解決

List<List<int>> l = new List<List<int>>();

l.Add(new List<int> { 1, 2, 3, 4, 5, 6});
l.Add(new List<int> { 4, 5, 6, 7, 8, 9 });
l.Add(new List<int> { 8, 9, 10, 11, 12, 13 });

var result = (from e in l
              from e2 in e
              select e2).Distinct();

アップデート09.2013

しかし、これらの日は、私が実際としてそれを記述します。

var result2 = l.SelectMany(i => i).Distinct();

他のヒント

List<int> result = listOfLists
  .SelectMany(list => list)
  .Distinct()
  .ToList();

いかがます:

HashSet<int> set = new HashSet<int>();
foreach (List<int> list in listOfLists)
{
    set.UnionWith(list);
}
return set.ToList();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top