相同的旧“join子句中某个表达式的类型不正确”

时间:2016-03-01 15:25:08

标签: c# linq

我知道有很多问题。我已阅读它们,并且我为匿名类型属性创建了相同的名称和类型。我仍然在标题中收到错误。

代码是:

var v = (from o in dataContext.pp_orders.Where(p => p.ID > lastOrderID).OrderBy(p => p.DueDate)
                 join part in dataContext.pp_parts on o.ProductID equals part.ProductID
                 join op in dataContext.pp_operations on new { ID2 = part.ID } equals new { ID2 = (int)op.PartID }
                 select (x => new JobModel { o = o, op = op }));

错误发生在第二次加入。

[UPDATE]

似乎联接等于正确。此查询有效(无错误):

var v = (from o in dataContext.pp_orders.Where(p => p.ID > lastOrderID).OrderBy(p => p.DueDate)
                 join part in dataContext.pp_parts on o.ProductID equals part.ProductID
                 join op in dataContext.pp_operations on part.ID equals (int)op.PartID
                 select op);

问题在于select子句。我不明白为什么它会在select子句的标题中给出错误。

select (x => new JobModel { o = o, op = op })

1 个答案:

答案 0 :(得分:1)

您正在混合查询语法和方法语法。方法语法使用lamdbas来投影数据,而查询语法使用更自然的类似sql的语法:

将您的选择更改为:

select new JobModel { o = o, op = op }