2013-02-07 13 views
6

多分、夜遅くなるかもしれませんが、私はここで困惑しています。私は1つに同じプロパティを持つ複数のリストを結合しようとしています。私はLINQの.UNIONがトリックをするだろうと思ったが、私は間違っていた。私のリストのいくつかの例です:C# - 同じプロパティを持つ複数のLINQコレクションを組み合わせる

LIST1 (report names): 
Date  Name Title   Product 
02/01/13 Steve Hello World Report 
02/05/13 Greg Howdy   Report 

LIST2 (song names): 
Date  Name Title   Product 
01/01/13 John Time   Song 
01/05/13 Bob  Sorry   Song 

LIST3 (games names): 
Date  Name  Title   Product 
12/01/12 Google Bike Race  Game 
12/05/12 Apple  Temple Run Game 

私のクラスは非常に簡単です。ここでは次のようになります。あなたが迷っている場合は

public class MyClass { 
    public DateTime Date { get; set; } 
    public string Name { get; set; } 
    public string Title { get; set; } 
    public string Product { get; set; } 
} 

、私は上記のリストのいずれかを取得するには、このLINQクエリを使用:

var finalList = Games 
    .Select (s => new MyClass { 
    Date = (System.DateTime) s.Games.Creation_date, 
    Name = s.Games.Last_name, 
    Title = string.Format("{0} (Report)", s.Game.Headline), 
    Product="Report" 
    }) 
    ; 

はこれまでのところ、それは非常に簡単ですが、私はしたいですだから、1にすべての私のリストを組み合わせることが、私の最終的なリストは、次のようになります。

Date  Name Title   Product 
02/01/13 Steve Hello World Report 
02/05/13 Greg Howdy   Report 
01/01/13 John Time   Song 
01/05/13 Bob  Sorry   Song 
12/01/12 Google Bike Race  Game 
12/05/12 Apple Temple Run Game 

私はUNIONコマンドはそれを行うだろうと思った:

var newList = List1.Union(List2).Union(List3); 

しかし、私は希望の出力を得ていません。

Date  Name Title   Product 
02/01/13 Steve Hello World Report 
02/05/13 Greg Howdy   Report 
01/01/13 Bob  Time   Game 
01/05/13 John Sorry   Song 
12/01/12 Google Bike Race  Song 
12/05/12 Apple Temple Run Game 

私がここで間違っているのは何ですか?

+0

を持っていることwhould失敗するようになっているはずですあなたはAddRangeコマンドを使用して試みることができますユニオンを使用するときに得ますか? –

答えて

14

試してみてください。

list1.Concat(list2).Concat(list3); 

あなたはそれが労働組合を設定しないとにかくとして、(仕事やない)Unionを使用したくありません。

1

この

var FullList = list1.AddRange(list2).AddRange(list3); 

や安全な方法は

var FullList = list1.Concat(list2).Concat(list3).ToList(); //Personally i would use this 

またはあなたもあなたの結果何

var FullList = new[] { list1, list2, list3 }.SelectMany(a => GetAllProducts(a)).ToList(); 
関連する問題