2015年06月24日

LINQ to Objectサンプル(14): 2つのリストの和集合を求める

  
2つのリストの要素を重複の無いように併合し、新たなリストを生成する例です。

■ループを使ったコード
var list1 = new List<int> { 1, 2, 3, 4, 5 };
var list2 = new List<int> { 0, 2, 4, 6, 8 };
List<int> ans = new List<int>(list1);
foreach (var n in list2) {
    if (!ans.Contains(n))
        ans.Add(n);
}
ans.Sort();
ans.ForEach(Console.WriteLine);

この例では、併合後に、昇順にソートしています。
ans には、{0,1,2,3,4,5,6,8 } が格納されます。

■LINQを使ったコード
var list1 = new List<int> { 1, 2, 3, 4, 5 };
var list2 = new List<int> { 0, 2, 4, 6, 8 };
var ans = list1.Union(list2)
               .OrderBy(n => n)
               .ToList();
ans.ForEach(Console.WriteLine);

Unionメソッドで和集合を取り、OrderByで並び順を変えています。

LINQ にはその他、差集合を得る Except、積集合を得るIntersectメソッドもあります。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52423418