LINQ在不相等的键上联接
本文关键字:不相等 LINQ | 更新日期: 2023-09-27 18:29:32
我需要将此SQL查询转换为LINQ
SELECT *
FROM Table1 t1
JOIN Table2 t2 ON t1.LogDate >= t2.StartDate AND t1.LogDate <= t2.EndDate
以上SQL查询的LINQ应该是什么?
LINQ只支持对相等键的联接,我建议使用交叉联接。根据您的查询优化器,它可能会转换为内部联接
from t1 in Table1
from t2 in Table2
where t1.LogDate >= t2.StartDate && t1.LogDate <= t2.EndDate
select new { t1, t2 }
如果您要连接这些表,希望您能提前考虑,并在Table2到Table1中使用外键引用设计数据库。假设您这样做,Lambda表达式将如下所示:
表1表2
PK->ID FK->T1_ID
db.Table1.Join(db.Table2.ToList(),
t1 => t1.ID,
t2 => t2.T1_ID,
(t1, t2) => new { Table1, Table2})
.Where(result => result.Table1.LogDate >= result.Table2.StartDate &&
result.Table1.LogDate <= result.Table2.EndDate);