【发布时间】:2015-03-06 06:35:03
【问题描述】:
我想编写一个带有左外连接的LINQ 查询。为此,我可以编写相应的SQL 查询,它返回所需的输出,但在 linq 中同样的结果对我不起作用。
这就是我的 SQL 的样子:
SELECT Table1.ID, Table1.Description
FROM Table1 LEFT OUTER JOIN
Table2 ON Table1.AID = Table2.AID AND Table1.TID = Table2.TID
WHERE (Table2.Status <> 'Using') OR (Table.Status IS NULL)
此查询为我返回 7 条记录,这就是我的要求。现在我想用 LINQ 编写相同的查询,这是我尝试过的:
return (from t1 in db.Table1.AsEnumerable()
join t2 in db.Table2.AsEnumerable() on t1.AID equals t2.AID into outer
from item in outer.DefaultIfEmpty()
where item.TID == t1.TID
&& string.IsNullOrEmpty(item.Status) || item.Status != "Using"
select t1
);
但我一直面临这个问题。在这里,它无法找到项目并因此返回
'Object reference not set to an instance of an object.'
我在这里做错了什么????
我一直在尝试,但最终没有解决方案。因此,我们将不胜感激。在此先感谢..
【问题讨论】:
-
你为什么有这个
AsEnumerable()?您应该可以将其删除。 (两次)
标签: c# linq linq-to-sql outer-join