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例外!
答
只有当所有的连接匹配 - 换句话说,当有一行从Model
带有AP,选项,对话和发票时,您才会获得一行。我的猜测是,只有其中一个。
LINQ默认进行内部连接。如果您正在寻找一个左外连接(即某一行可能没有发票或Talk等),那么您需要使用组连接,通常与DefaultIfEmpty
一起使用。
我对VB语法不是特别热,但this article看起来像是你在做什么。
你如何使用查询的结果? – 2011-05-23 12:36:37
我绑定到一个gridview,然后导出到xls – Phil 2011-05-23 12:38:20
如果你运行相应的SQL(包含所有连接),你会得到全部60行吗? – Oded 2011-05-23 12:39:20