LINQ 到数据集左连接
很抱歉,如果这个问题已经提出,但经过几个小时的搜索,我似乎找不到解决此问题的方法。我尝试在 1 个表上创建左联接,但当我尝试返回另一个表上的列时,出现空引用错误。尝试了一些解决方法但仍然不起作用。
这是我的代码。
from t1 in ds.TABLE1
join t2 in ds.TABLE1
on t1.COL2 equals t2.COL1 into j1
from t3 in j1.DefaultIfEmpty()
select new {
t1.COL5,
t3.COL6
};
如果我尝试显示 t1 中的所有列,一切都很好,但是一旦我显示 t3 中的列,就会出现错误。看来 t3 中的空行导致了错误。我如何确定或阻止显示 t3 中的空行?尝试使用 null 和 dbnull 但仍然没有成功。
我很感激任何帮助。谢谢
Sorry if this question has already been raised, but after hours of searching, i cant seem to find the way on how to fix this. Im trying to create a left join on 1 table but when i try to return a column on the other table, a null reference error was raised. tried some workarounds but still doesn't work.
here is my code.
from t1 in ds.TABLE1
join t2 in ds.TABLE1
on t1.COL2 equals t2.COL1 into j1
from t3 in j1.DefaultIfEmpty()
select new {
t1.COL5,
t3.COL6
};
If i try to display all columns from t1 all works great, but once i display cols from t3 then error appears. It seems that null rows from t3 is causing the error. How can i determine or rather prevent null rows from t3 to be displayed? Tried using null and dbnull but still no success.
I appreciate any help. thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要处理
t3
为 null 的情况。例如:
You need to handle cases where
t3
is null.For example:
添加 where 子句
Add a where clause
非常抱歉,但忘记提及引发错误的列之一是计算列(带有表达式的数据列)。我将列的 NULLVALUE 属性从 THROW EXCEPTION 更改为 (Null) 并在我的 select 子句中使用内联 if 就像 slacks 提到的那样,它解决了我的问题。
只是想知道,为什么 linq 没有任何方法来捕获 DBNULL 值?它可以捕获 null 但不能捕获 dbnull?有什么区别吗?
不管怎样,我的问题解决了。
谢谢你们的帮助。
Very sorry, but forgot to mention that one of the columns raising the error is a calculated column (datacolumn with expressions). I changed the column's NULLVALUE property from THROW EXCEPTION to (Null) and used the inline if in my select clause just as slacks mentioned and it solved my problem.
Just wondering, why does linq doesn't have any ways to trap DBNULL values? It can trap null but not dbnull? any difference?
Anyways, my problem was solved.
Thanks for you help guys.