【发布时间】:2019-03-18 08:32:29
【问题描述】:
我已经为此苦苦挣扎了一段时间,找不到基于日期具有多个条件的 LINQ 外连接的语法。我一直在研究 GroupJoin 语法,但这只能让您比较一个字段值(通常是 ID)。
我想测试父表的日期(例如“UpdateDate”)是否属于子表中定义的多个值(例如“StartDate”和“EndDate”)。如果父日期符合条件,请从子表中拉出一两列。如果不是,则子表中的那些列应该为空(经典的左连接内容)。
我认为查询语法不会起作用,因为它只能识别等值连接。
有没有办法在 LINQ 中使用 Lambda 语法做到这一点?我一直在尝试使用“SelectMany”和“DefaultIfEmpty”的某种组合,但在尝试定义连接时一直卡住。
【问题讨论】:
-
您能否添加一些示例数据(3 - 10 个实体)以及哪些实体应在某些给定的约束条件下出现?
-
关于样本数据,为简单起见,想象一个具有 ID、Desc 和 UpdateDate 的父表和一个具有 StartDate、EndDate 和 WeekNumber 列的子表(也许“辅助”表会是更好的描述) .两个表之间没有匹配的列。我希望这会有所帮助...
-
不。请在您的问题中添加一些代码。写下一个简单的示例类(例如
public class MyEntity { public int Id {get; set;} }或多个以显示关系)和一些代码,这些代码创建一个包含几个实体的列表(或多个用于关系)。然后写下您希望在查询中设置哪些约束以及上述哪些实体应该出现。如果你提供这个,我可以很容易地复制这段代码并解决你的问题。
标签: linq conditional left-join