2017-10-29 1 views
1

私はそれらの間に値を設定するために参加する必要がある2つのリストを持っています。 最初のリストはcompanytaxesnumberで、2番目のリストはordertaxesです。 両方ともTaxIdを持っています。結合演算子で元の値を保持する方法は?

ここではそれについてコード:

destination.OrderTaxes = destination.OrderTaxes. 
      Join(src.companytaxesnumber, vModel => vModel.TaxId, source => source.TaxId, (dest, source) => 
      { 
        dest.LegalNumber = source.LegalNumber; return dest; 
      }).ToList(); 

私の問題はcompanytaxesnumberが少ないデータを持っているならば、ordertaxes(何らかの理由で)、参加オペレータはcompanytaxesnumberのカウントと結果 を返し、失われますです参加できなかったその他のデータordertaxes

一部のデータがcompanytaxesnumberと結合されていない場合でも、完全なordertaxesリストを取得するにはどうすればよいですか?あなたがLEFT OUTER JOINを探している

答えて

2

、あなたがあなたのタスクを実行できます。

var result = from o in destination.OrderTaxes 
      join d in src.companytaxesnumber on o.TaxId equals d.TaxId into temp 
      from p in temp.DefaultIfEmpty() 
      select new { /* assign the fields appropriately */ }; 

LEFT OUTER JOINあなたは関係なく、それが第二のいずれかの相関の要素を持っているかどうかの最初のコレクションのすべての要素を保持することができますコレクション。

+0

私が示したコードと同じ構文のものはありますか? –

+1

でも可能ですが、クエリ構文を使用するよりも面倒です。 [** linq拡張メソッド**を使用して左外部結合をどのように行うか(https://stackoverflow.com/questions/584820/how-do-you-perform-a-left-outer-join-using- linq-extension-methods) –

関連する問題