我有 3 个表,我试图使用左连接将它们组合在一起。在我的应用程序中,所有 LINQ 表达式都是查询链格式(lambda 表达式)。
我试图弄清楚如何使用 LINQ 完成这个查询;
这是我的 SQL 查询;
select i.INVOICE_NUMBER, ic.CustomerName, o.BusinessUnit
from Invoices_Daily as i
left join intercompany as ic on i.customer_number = ic.customernumber
left join ordertypes as o on i.LINE_ORDERTYPE = o.OrderType
我尝试过结合GroupJoin
如下;
var commissions = data
.GroupJoin(genericNameList,
d => d.CUSTOMER_NUMBER,
g => g.CustomerId,
(d, g) => new { d, generic = g.FirstOrDefault() })
.GroupJoin(intercompanies,
dd => dd.d.CUSTOMER_NAME,
i => i.CustomerId,
(d, i) => new { data = d.d, intercompanies = i.FirstOrDefault() })
.Select(_ => new MainGridViewModel
{
INVOICE_DATE = _.d.INVOICE_DATE,
EndCustomer = _.generic == null ? _.d.CUSTOMER_NAME : _.generic.EndCustomer ?? _.d.CUSTOMER_NAME,
LINE_ORDERTYPE = _.i.OrderType
})
.ToList();
但是我有一个语法错误,如下所示;
错误 CS0411 无法从用法推断方法“Enumerable.GroupJoin(IEnumerable, IEnumerable, Func, Func, Func, TResult>)”的类型参数。尝试显式指定类型参数。