LINQ左加入错误
问题描述:
我有2个通用列表调用学生和条目他们在1到0..1的关系。学生1:0..1参赛作品LINQ左加入错误
我想从参赛作品中获得学生姓名,身份证和英语,数学细节列表(如果存在)。
我的LINQ查询如下,我得到空引用错误在se英文。你能帮忙吗?谢谢。
var query = from s in students
join t in entries
on s.StudentDetailID equals t.StudentDetailID into StudentEntries
from se in StudentEntries.DefaultIfEmpty()
select new { s.StudentDetailID, s.LastName, s.FirstName,
se.English};
答
se
可能为空,因为您分配了它StudentEntries.DefaultIfEmpty()
。并且类的缺省值为null。所以,你不能叫se.English
之前没有测试它为空:
var query = from s in students
join t in entries
on s.StudentDetailID equals t.StudentDetailID into StudentEntries
from se in StudentEntries.DefaultIfEmpty()
select new { s.StudentDetailID, s.LastName, s.FirstName,
se == null ? null : se.English};
答
至于你说你有一个1-0..1关系,从而有可能se.english将是无效的(因为你使用的左外连接),你应该在你的查询中处理它,我认为它会是String,如果它是null,则放“”,你可以按照你的意愿处理它。
var query = from s in students
join t in entries
on s.StudentDetailID equals t.StudentDetailID into StudentEntries
from se in StudentEntries.DefaultIfEmpty()
select new { s.StudentDetailID, s.LastName, s.FirstName,
English = se.English?? ""};