相关疑难解决方法(0)

Linq to SQL使用Lambda语法并在2列上进行了左外部联接(复合联接键)

我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

我成功地在左列上使用以下代码进行了联接。

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();
Run Code Online (Sandbox Code Playgroud)

问题在于,使用上述Lambda时,我得到了太多结果,因为它缺少AND participants.event_id = prereg_participants.event_id零件。但是,无论我怎么努力,我都没有得到正确数量的参与者。

我查看了以下现有问题,但是在编写正确的lambda时没有一个解决了我的问题。而且大多数解决方案都是lambda格式的nog或不是多列上的Left外部联接。

如何在LINQ中在单个联接中的多个字段上进行联接

LINQ to SQL-具有多个联接条件的左外部联接 …

c# sql-server asp.net lambda linq-to-sql

5
推荐指数
2
解决办法
1859
查看次数

连接语句中的条件的Lambda

我必须Employee根据他们进行过滤department。我可以使用LINQ进行相同的操作。

Linqlambda编译以得到相同的结果。编译器Lambda expression在编译之前将查询表达式更改为等效表达式,因此生成的IL完全相同。资源

var deptCollection = new List<Dept>();
var employeeCollection = new List<Employee>();

employeeCollection.Add(new Employee { Id = 1, Name = "Eldho" });

deptCollection.Add(new Dept { DepetarmentName = "a", EmployeeId = 3 });
deptCollection.Add(new Dept { DepetarmentName = "a", EmployeeId = 1 });

var empinadept = (from e in employeeCollection
                  from dep in deptCollection
                  where e.Id == dep.EmployeeId
                  && dep.DepetarmentName == "a"
                  select e)
                 .ToList();
Run Code Online (Sandbox Code Playgroud)

我无法.Where在此Lambda中添加子句

var empindeptLamda …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

2
推荐指数
1
解决办法
3531
查看次数

标签 统计

c# ×2

lambda ×2

asp.net ×1

linq ×1

linq-to-sql ×1

sql-server ×1