2016-07-05 77 views
-1

我需要使用LINQ進行左連接。LINQ左加入錯誤答案

我使用這個代碼:

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(); 

在listEstadoGeral我有27條記錄,並在listEstadoCoberto我有5個記錄。

查詢共有27條記錄。

這段代碼有什麼問題?

+0

的是,從第一臺5條不同的共有27條記錄?我想,你有27條記錄,因爲5條記錄與27條記錄匹配。 –

+0

他們有相同的ID。 – b3r3ch1t

+1

然後行爲是預期的。由於它們具有相同的ID,所以Result集應該有全部27行,即使你使用了左連接而沒有ID匹配,結果也只有27行。 –

回答

0

如果你想獲得存在於listEstadosGeral不在listEstadoCoberto記錄:

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

謝謝Alrighty然後它爲我工作。 – 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();