C# 使用Linq Join语句时遇到问题
因此,我有以下Linq查询: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_
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