具有非可空值类型属性的对象上的LINQ DefaultIfEmpty问题

时间:2012-09-17 00:03:18

标签: c# linq defaultifempty

要求

  1. 我需要加入Table1和Table2
  2. 两个表之间的关键是ID,它是System.Guid类型,是不可为空的值类型
  3. 如果Table2.ID为null,我需要从Table1获取空记录。
  4. 我写的LINQ语法如下。

    from records in DBContext.Table1
    join history in DBContext.Table2 into recordhistory
    from records in recordhistory.DefaultIfEmpty()
    select (n => n);
    

    我得到的错误是“无法将null值分配给System.Guid类型的成员,该类型是非可空值类型。”

    有人可以就此提出建议吗?非常感谢你。

2 个答案:

答案 0 :(得分:0)

假设您有一个ID属性,以下内容应该作为内部联接:

var result = DBContext.Table1
              .Join(DBContext.Table2, t1 => t1.ID, t2 => t2.ID, (t1, t2) => t1);

答案 1 :(得分:0)

我猜,你提供的查询应该给出错误,说明应该指定on语句。所以,我想它应该看起来像这样:

from records in DBContext.Table1
join history in DBContext.Table2 on records.ID equals history.ID into temp
from recordhistory in temp.DefaultIfEmpty()
select new { Record = records, History = recordhistory };