我试图从FDerive获取所有数据,但是我尝试使用where子句设置过滤器。不幸的是,当我在spd中的行为空时触摸spd时,我得到一个nullreferencexpection。
var Result = from fpd in FDerive
join spd in SDerive
on new { fpd.PId, fpd.SId }
equals new { spd.PId, spd.SId } into allRows
from spd in allRows.DefaultIfEmpty()
where spd.SId == ""
|| spd.PId == ""
select new { fpd, spd };
如何解决null错误?
答案 0 :(得分:0)
DefaultIfEmpty<T>
将返回一个只包含一个默认值为T
的元素的集合 - 在本例中为null
- 如果源集合为空。如果在联接中没有返回任何项目,spd
将为null
。
尝试检查where子句
中的null
var Result =
...
where spd == null || spd.SId == "" || spd.PId == ""
select new { fpd, spd };
答案 1 :(得分:0)
我在以下问题的代码底部找到了答案
var results =
from person in students
join entry in subquery on person.FullName equals entry.AuthorFullName into personEntries
from personEntry in personEntries.DefaultIfEmpty()
orderby person.FullName
select new
{
PersonName = person.FullName,
BlogTitle = personEntry == null ? "" : personEntry.Title
};