gpt4 book ai didi

C# - 多个属性上的动态 Linq 左外连接

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:54 25 4
gpt4 key购买 nike

我想在 Dynamic Linq 中进行左外连接,但语法不正确。在 SQL 中,它看起来像这样:

SELECT col1, col2, col3 from tableA as a
LEFT OUTER JOIN tableB as b on a.col1 = b.col1 AND a.col2 = b.col2 AND a.col3 = 1

在动态 linq 中我试过这个:

dbContext.tableA
.GroupJoin(tableB, col1 == tableA.col1 && col2 == tableA.col2 && col3 == 1)
.Select('new(col1, col2, col3)');

第三个连接参数(列)只是硬编码的,因为它不是来自表 B。什么是正确的 linq 代码?

编辑:这不是一个重复的问题。我正在寻找适用于动态 LINQ 而不是普通 linq 的语法

最佳答案

通常对于连接,尤其是左连接,我使用语句语法。

未测试,但看起来像这样:

var result = from a in tableA
from b in tableB.Where(x => x.col1 == a.col1 && x.col2 == a.col2 && a.col3 == 1).DefaultIfEmpty()
select new { a.col1, a.col2, b.col3 };

通过对表 B 的连接执行 .DefaultIfEmpty(),它将把它视为左连接。如果您省略了 .DefaultIfEmpty(),那么它将表现得像一个内部联接。

关于C# - 多个属性上的动态 Linq 左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39145222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com