ONE

2011-01-25 9 views
2

私は自分のアプリケーションでドメインオブジェクトを次のようしているにTWO IEnumerableをリストからデータをマージ/統合)と、データが移入2つの別々の列挙(記述内容&価格を)持っています:​​とcargoSuppliers_Pr EXCEPTデータが移入すべてのフィールドを持つことになりますONE

IEnumerable<CargoSupplier> cargoSuppliers_Pricing 
IEnumerable<CargoSupplier> cargoSuppliers_Content 

cargoSuppliers_ContentアイシングにはSupplierType, SupplierCode and IList<Product>フィールドにデータが入力されます。 "SupplierType"と "SupplierCode"の組み合わせが鍵になります。

コンテンツと価格設定を1つの列挙にマージして、コントローラ&にIEnumerable<CargoSupplier> cargoSuppliersを返す必要があります。これらの2つのリストを1つに統合/統合する最良の方法は何ですか?

答えて

3

をインポートすることを忘れないあなただけのいずれかのリスト内のすべての項目が含まれている1つのリストを望んでいないように聞こえる - あなたは、個々のアイテムをマージする必要があるようですね。このような何か:

var query = from pricing in cargoSuppliers_Pricing 
      join content in cargoSuppliers_Content 
      on pricing.SupplierCode equals content.SupplierCode 
      select new CargoSupplier 
      { 
       // Copy properties from both objects here 
      }; 

「選択」の部分の中には、あなたは両方のビットを持っているCargoSupplierオブジェクトを構築し、「価格」と「コンテンツ」からのコンテンツ部分からの価格設定の部分を取るだろう。

これはあなたの後でしたか?

+0

+1そうかもしれません。私は、 "合併/統合"は、彼がコンカットよりも何かを望んでいることを意味します。 –

+0

Jon、あなたは正しいです。私は実際には両方のリストからcargoSuppliers_PricingのProduct of IListを持つ個々のアイテムをマージする必要があります。あなたのソウルシップは完璧に働いた。ありがとう。 – Alex

3

使用Enumerable.Concat

2つのシーケンスを連結。

例:連合()拡張メソッドを見

var result = cargoSuppliers_Content.Concat(cargoSuppliers_Pricing); 
0

?それはあなたの後に何をする必要があります

IEnumerable<CargoSupplier> allCargoSuppliers = cargoSuppliers_Pricing.Union(cargoSuppliers_Content); 
4

あなたはユニオンを探していますか質問に何か不足していますか?

var mergedList = list1.Union(list2).ToList(); 

System.Linq名前空間