1

我有 2 个通用列表,称为学生条目 ,它们是 1 到 0..1 的关系。学生 1:0..1 参赛作品

如果存在,我想从 Entries 获取学生姓名、ID 和英语、数学详细信息的列表。

我的 LINQ 查询如下,我在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.English};
4

2 回答 2

1

正如您所说,您有 1-0..1 关系,因此 se.english 可能为空(因为您使用了左外连接),您应该在查询中处理它,我假设它是字符串和put "" 如果为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?? ""};
于 2013-04-24T12:57:10.547 回答
0

se可能为空,因为您分配了它StudentEntries.DefaultIfEmpty()。并且类的默认值为空。所以你不能在se.English没有测试 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,
        se == null ? null : se.English};
于 2013-04-24T12:56:29.467 回答