Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 使用Linq Join语句时遇到问题_C#_Sql_Asp.net Mvc_Linq - Fatal编程技术网

C# 使用Linq Join语句时遇到问题

C# 使用Linq Join语句时遇到问题,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,因此,我有以下Linq查询: var comb1 = (from m1 in _modified join o1 in _original on m1.custom_field_option_id equals o1.custom_field_option_id from e1 in _existing .Where(row => (m1.custom_field_

因此,我有以下Linq查询:

var comb1 = (from m1 in _modified
                     join o1 in _original on m1.custom_field_option_id equals o1.custom_field_option_id
                     from e1 in _existing
                     .Where(row => (m1.custom_field_option_id == row.custom_field_option_id || m1.custom_field_option_id == 0)
                         && row.custom_field_id == m1.custom_field_id).DefaultIfEmpty()
                     select new { m1, o1, e1 }).ToArray();
在修改的列表中,我有两项。在列表中,我有一个项目。
\u modified
中的第二项是新的插入记录<代码>\原始的不包含此记录,现有的也不包含此记录

新记录未包含在我的组合数组中。新记录的自定义字段选项id当前为0,因此我将其添加到where子句中:

|| m1.custom_field_option_id == 0
但那没用


如何更改此查询以将新记录包含在
\u modified

中,除非缺少以下方法: 将o1加入m1上的_原件。自定义_字段_选项_id等于o1。自定义_字段_选项_id 是一个硬连接到任何在_原创


是因为该行不是原始行,所以该行不存在吗?

是否应该将
\u mod.custom\u field\u id
设置为m1.custom\u field\u id`,还是我遗漏了什么?我将\u mod.custom\u field\u id更改为m1.custom\u field\u id并更新了我的答案。仍然有完全相同的问题,谢谢你的帮助!还有,你想要的最终结果是什么?这会让你更容易找到答案。好吧,我正试图把目前被排除在外的第二条记录包括在内,这才是真正的目标。我的最终结果将包含两条记录,而它当前只包含一条。@BrianOgden您是否尝试过像这样的左外连接?似乎是这样,我以为我在利用.DefaultIfEmpty()的优势为了正确地创建一个左外连接,让我们看看是否可以从m1中的m1 in _modifiedjoin o1 in _originalon m1.custom_field_option_id等于o1.custom_field_option_id from m1 in _modifiedo1 in _original.Where(row=>row.custom field_option_id==m1.custom field_option_id)。相反,DefaultIfEmpty(),只需为所有缺少的行向_original添加一个虚拟行。以其他方式获得联接。让我们看看是否可以将此外部从m1中的m1修改联接o1原始于m1。自定义字段选项id等于o1。自定义字段选项id从m1中修改为原始。其中(row=>row.custom字段选项id==m1.custom字段选项id)。DefaultIfEmpty()或相反,只需为所有缺少的行向_original添加一个虚拟行。以其他方式获得加入。删除| | m1.custom_字段_选项_id==0