通过Lambda表达式进行多字段联接

本文关键字:字段 Lambda 表达式 通过 | 更新日期: 2023-09-27 18:28:08

我正试图弄清楚如何在其中引入多个字段匹配。现在我是基于与公司表匹配的UserId加入的。但是,如果我想在那里也有一个AND,比如c.SomeField = somevalue,该怎么办?

var companyUsers = users.Where(u => u.IsEmployee)
                        .Join(companies, 
                              u => u.UserId, c => c.UserId, 
                              (u, c) => u.UserId)
                        .ToList();

通过Lambda表达式进行多字段联接

如果somevalue是一个常数(即与用户无关),那么您应该首先过滤companies

var companyUsers = users.Where(u => u.IsEmployee)
                        .Join(companies.Where(c => c.SomeField == someValue),
                              u => u.UserId, c => c.UserId, (u, c) => u.UserId)
                        .ToList();

如果您需要将用户的两个字段连接到公司的两个域,请使用SLaks所示的匿名类型。

您需要加入匿名类型:

as.Join(bs, a => new { a.X, a.Y }, b => new { b.X, b.Y })