2016-07-05 11 views
-1

LINQを使用して左結合を行う必要があります。LINQ誤った応答で左結合

私はこのコードを使用しています:listEstadoGeralで

var query = (from Geral in listEstadosGeral 
        join Coberto in listEstadoCoberto 
         on Geral.Id equals Coberto.Id 
         into temp 
        from j in temp.DefaultIfEmpty() 
        select new Estado() 
        { 
         Sigla = Geral.Sigla, 
         Nome = Geral.Nome 

        }).ToList(); 

私は27件のレコードを持っているとlistEstadoCobertoに、私は5つのレコードを持っています。

クエリには27個のレコードがあります。

このコードで何が問題になっていますか?

+0

を最初にテーブル27のレコードからの5つのレコードが違うのですか?私は、あなたが27のレコードを持っていると仮定します.5つのレコードがIDと27のレコードを一致させたからです。 –

+0

これらのIDは同じです。 – b3r3ch1t

+1

この場合、動作は期待されます。それらのIDが同じであるため、結果セットには27の行がすべて含まれている必要があります.IDが一致していない左結合を使用していたとしても、結果は27のみになります。 –

答えて

0

あなたがlistEstadoCobertoにないlistEstadosGeralに存在しているレコードを取得したい場合:

var result = listEstadosGeral.Where(p => !listEstadoCoberto.Any(p2 => p2.ID == p.ID)).ToList(); 
+0

ありがとうそれは私のために働いた。 – b3r3ch1t

0
var query = (from Geral in listEstadosGeral 
       join Coberto in listEstadoCoberto 
       on Geral.Id equals Coberto.Id      
       select new Estado() 
       { 
        Sigla = Geral.Sigla, 
        Nome = Geral.Nome 
       }).ToList();