Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有不可为null的值类型属性的对象上的LINQ DefaultIfEmpty问题 要求 我需要加入表1和表2 两个表之间的键是ID,该ID是System.Guid类型,是不可为null的值类型 如果Table2.ID为null,我需要从Table1中获取null记录 我编写的LINQ语法如下。_C#_Linq_Defaultifempty - Fatal编程技术网

C# 具有不可为null的值类型属性的对象上的LINQ DefaultIfEmpty问题 要求 我需要加入表1和表2 两个表之间的键是ID,该ID是System.Guid类型,是不可为null的值类型 如果Table2.ID为null,我需要从Table1中获取null记录 我编写的LINQ语法如下。

C# 具有不可为null的值类型属性的对象上的LINQ DefaultIfEmpty问题 要求 我需要加入表1和表2 两个表之间的键是ID,该ID是System.Guid类型,是不可为null的值类型 如果Table2.ID为null,我需要从Table1中获取null记录 我编写的LINQ语法如下。,c#,linq,defaultifempty,C#,Linq,Defaultifempty,我得到的错误是“无法将空值分配给类型为System.Guid(不可为空的值类型)的成员。” 有人能给我一些建议吗?非常感谢。假设您有一个ID属性,以下内容应作为内部联接使用: var result = DBContext.Table1 .Join(DBContext.Table2, t1 => t1.ID, t2 => t2.ID, (t1, t2) => t1); 我想,您提供的查询应该给出一个错误,即应该指定语句上的。所以,我想应该是这样的:

我得到的错误是“无法将空值分配给类型为System.Guid(不可为空的值类型)的成员。”


有人能给我一些建议吗?非常感谢。

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

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

我想,您提供的查询应该给出一个错误,即应该指定语句上的
。所以,我想应该是这样的:

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

最后一部分是什么?(t1,t2)=>t1这是返回结果的记录。如果需要,可以在此构造一个新对象,该对象可以包含t1和t2的组合属性;e、 g.new MyResult(){Property1=t1.ID,Property2=t2.Value}“如果Table2.ID为空,我需要从Table1中获取空记录”你是什么意思:可以有没有ID的历史记录?或者,您是指没有历史记录的Table1记录,如果是,则不选择Table1记录?
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 };