0

如果有人可以向我解释为什么这个查询不像 SQL 左连接,我在徘徊,我似乎无法弄清楚为什么。我一直在打猎,但似乎无法解决。据我所知,它应该。
即在有 5 个活跃客户的表中,它只会返回其中 2 个客户,而不是全部 5 个;2 带有值,3 带有 null 或 0?

var results = from c in DataContext.Customers
              where c.Active
              join j1 in
              (from i in DataContext.Invoice where i.State== "Pending" &&
               i.InvoiceDate.Date >= From.Date && i.InvoiceDate.Date <= To.Date 
               group i by i.Customer into x 
                      select new { x.Key, Total = x.Count() }) on a equals j1.Key
                      select new { c, j1.Total };

谢谢

4

2 回答 2

1

通过使用 DefaultIfEmpty() 方法,您可以做到这一点。试试这个代码,我已经实现了你的问题的解决方案,如果它有效,请回复我

var results = from c in DataContext.Customers
                  where c.Active
                  join j1 in
                  (from i in DataContext.Invoice where i.State== "Pending" &&
                   i.InvoiceDate.Date >= From.Date && i.InvoiceDate.Date <= To.Date 
                   group i by i.Customer into x 
                          select new { x.Key, Total = x.Count() }) on a equals j1.Key into j3
                                from k in j3.DefaultIfEmpty()
                          select new { c, k.Total };
于 2013-05-07T05:36:41.267 回答
0

我会DefaultIfEmpty()在您的子查询上尝试方法j1,因为您不允许查询加入空值。

有关示例,请参见类似的问题

于 2013-05-07T05:09:51.147 回答