【发布时间】:2021-09-19 02:41:26
【问题描述】:
这可能会因为可能的重复而关闭:The type of one of the expressions in the join clause is incorrect in Entity Framework 但如果不阅读整个问题,我会要求不要关闭它。
虽然它似乎是重复的question,但如果可能,我会请求阅读并提供帮助。我已经看到了我链接的同一个问题的解决方案,它描述了属性类型和名称必须匹配。我仔细阅读了那里的解决方案,并确保我的每一个都遵循。
但是,我在代码中找不到任何属性类型和名称不匹配错误。所以我猜我还缺少其他东西。因此寻求帮助创建一个单独的问题。
所以我试图在On 子句中写LINQ Join 和Multiple Conditions。我已经编写了它们以确保对象的属性具有相同的类型和名称。尽管如此,我还是遇到了臭名昭著的误导性错误 - join 子句中的表达式之一不正确。调用“加入”时类型推断失败。
以下是我的代码:
results = from i in context.Invoices.AsNoTracking()
join iwr in context.InvoiceWorkOrderRelations on i.ID equals iwr.InvoiceId
join w in context.WorkOrders on iwr.WorkOrderId equals w.ID
join scr in context.StationCompanyRelations
on new { Company = w.CompanyID ?? -1, Station = w.RepairLocation ?? -1 } equals new { Comapny = (int)?scr.CompanyID, Station= (int)?scr.StationID }
where i.IsDeleted == false
&& (companyID == Company.SYSTEMCOMPANYID || i.CompanyId == companyID)
orderby i.ID descending
select new DTO.InvoiceQuickView
{
ID = i.ID,
....
ShopCode = scr.ShopCode
};
CompanyID 和来自WorkOrders 上下文的RepairLocation 都是 int? 类型,因此,我键入转换关系表并为每个属性提供字符串名称以确保。
为了处理空值,我添加了w.CompanyID ?? -1。无论是否进行此 null 检查,错误仍然存在。
【问题讨论】:
标签: c# linq join linq-to-sql entity-framework-4