2016-07-05 92 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();