Linq查询只返回1行

问题描述:

Dim ds = From a In db.Model 
      Join b In db.1 On a.id Equals b.ID 
      Join c In db.2 On a.id Equals c.ID 
      Join d In db.3 On a.id Equals d.ID 
      Join f In db.4 On a.id Equals f.ID 
    Select a.id, a.Ref, a.Type, a.etc 

以上是我的linq查询。目前,我只有当前有60行时返回数据库的第一行。请你能告诉我哪里出错了,以及如何选择所有记录。Linq查询只返回1行

在此先感谢!

UPDATE:

当我拿出所有的连接,像这样:

Dim ds = From a In db.1, b In db.2, c In db.3, d In db.4, f In db.5 
Select a.id, a.Ref, a.type, b.etc, c.etc, d.etc 

我得到一个system.outofmemory例外!

+1

你如何使用查询的结果? – 2011-05-23 12:36:37

+0

我绑定到一个gridview,然后导出到xls – Phil 2011-05-23 12:38:20

+2

如果你运行相应的SQL(包含所有连接),你会得到全部60行吗? – Oded 2011-05-23 12:39:20

只有当所有的连接匹配 - 换句话说,当有一行从Model带有AP,选项,对话和发票时,您才会获得一行。我的猜测是,只有其中一个。

LINQ默认进行内部连接。如果您正在寻找一个左外连接(即某一行可能没有发票或Talk等),那么您需要使用组连接,通常与DefaultIfEmpty一起使用。

我对VB语法不是特别热,但this article看起来像是你在做什么。

+0

这听起来就像我在找的东西! – Phil 2011-05-23 12:45:10

+0

谢谢jon,这导致我的解决方案:0) – Phil 2011-05-24 07:27:03