LINQ-仅当外部条件满足时才将表与另一个表连接

时间:2018-09-07 07:05:02

标签: c# linq join

我要执行的任务是将一个表与另一个表连接。

Table 1: some data with Table1Id column.
Table 2: some data with Table2Id column.
Table 3: some data with Table3Id column.

现在,我想将Table1与Table2连接起来。 但是在这里,我只想在条件满足的情况下将Table1与Table3连接起来。
如果不满足条件,则不应仅包含表。
在LINQ中怎么可能是值得怀疑的。

示例:

var data = (from temp in Table1 join temp2 in Table2 on temp.Table1Id equals temp2.Table2Id
           select temp).ToList();

在这里,我要在查询本身中检查条件,并基于条件将Table1和Table2联接到Table3。并且,此条件不是基于Table列,而是外部条件。

Step1:将table1与table2连接。
第2步 ; if(外部条件==“是,加入Table3”)
           然后加入Table3。 任何建议或建议将不胜感激。
英语不是我的母语,所以请不要犯罪。

1 个答案:

答案 0 :(得分:0)

方法1: 步骤1:将Table1和Table2连接起来,并将其保存在变量中,例如XYZ 步骤2:根据条件将XYZ和Table3连接起来并保存

    var XYZ = (from temp in Table1 join temp2 in Table2 on temp.Table1Id equals temp2.Table2Id
               select temp).ToList();
    if condition ()
    {
        var data = (from temp in XYZ join temp3 in Table3 on temp.Table1Id equals temp2.Table2Id
               select temp).ToList();
   }

方法2: 在table3上使用左连接。在linq中,您可以为此使用GroupJoin