【发布时间】:2018-10-31 23:35:11
【问题描述】:
我正在尝试使用 Linq to SQL 作为 Lambda 表达式对 2 列进行内部联接。正常的查询应该是这样的。
SELECT * FROM participants
LEFT OUTER JOIN prereg_participants ON prereg_participants.barcode = participants.barcode
AND participants.event_id = prereg_participants.event_id
WHERE (participants.event_id = 123)
我正在使用以下代码成功地在一列上进行左外连接。
var dnrs = context.participants.GroupJoin(
context.prereg_participants,
x => x.barcode,
y => y.barcode,
(x, y) => new { deelnr = x, vi = y })
.SelectMany(
x => x.vi.DefaultIfEmpty(),
(x, y) => new { deelnr = x, vi = y })
.Where(x => x.deelnr.deelnr.event_id == 123)
.ToList();
问题是使用上面的 Lambda 我得到了太多的结果,因为它缺少 AND participants.event_id = prereg_participants.event_id 部分。但无论我尝试什么,我都没有得到正确数量的参与者。
我查看了以下现有问题,但没有一个能解决我编写正确 lambda 的问题。并且大多数解决方案都是 lambda 格式的 nog,或者不是多列上的左外连接。
How to do joins in LINQ on multiple fields in single join
LINQ to SQL - Left Outer Join with multiple join conditions
Group By using more than two columns by Lambda expression
其中大部分来自this Google search
【问题讨论】:
标签: c# asp.net sql-server lambda linq-to-sql