LINQ左加入错误

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?? ""};