首先,看一下这个帖子
LINQ to Dataset DBNULL problem / null reference exception
上面的链接提供了如何LEFT JOIN,然后是SELECT列,其中包含NULL值,而不会出现异常错误。
我的问题是我想在WHERE子句中将COUNT列为空(在我的LEFT JOIN之后,列中会弹出一些NULL值),如下所示:
int tmp1 =
(
from n in dt_query
join m in dt_query2
on n.Field<string>("VC_CLIENT_MAXID") equals m.Field<string>("VC_CHAT_MAXID") into nm
from m in nm.DefaultIfEmpty()
where
//string.IsNullorEmpty(m.Field<string>("VC_CHAT_STAFF"))
//DBNull.Value.Equals(m.Field<string>("VC_CHAT_STAFF"))
//m.IsNull("VC_CHAT_STAFF")
//object.Equals(m.Field<string>("VC_CHAT_STAFF"), xxx) <<< String xxx = null on above
select n.Field<string>("VC_CLIENT_MAXID")
).Count();
注释行是我尝试的解决方案,但它对我不起作用。任何帮助将不胜感激。
答案 0 :(得分:1)
如果您要问的是如何计算连接表为空的记录数,请尝试一下。
int tmp1 =
(
from n in dt_query
join m in dt_query2
on n.Field<string>("VC_CLIENT_MAXID")
equals m.Field<string>("VC_CHAT_MAXID") into nm
from LeftJoinM in nm.DefaultIfEmpty()
where
LeftJoinM == null
select n.Field<string>("VC_CLIENT_MAXID")
).Count();
如果我误解了你,请在评论中告诉我,我很乐意更新。
答案 1 :(得分:0)
我没有测试过以下代码。希望这应该可行
int tmp1 =
(
from n in dt_query
join m in dt_query2
on n.Field<string>("VC_CLIENT_MAXID")
equals m.Field<string>("VC_CHAT_MAXID") into nm
from temp in nm.where(t => t.Field<string>("VC_CLIENT_MAXID") ==null).DefaultIfEmpty()
select VC_CLIENT_MAXID= (temp== null) ? "" :n.Field<string>("VC_CLIENT_MAXID");
).Count();