C# 将3个表连接在一起的实体框架

C# 将3个表连接在一起的实体框架,c#,entity-framework,join,C#,Entity Framework,Join,我在尝试将这三个表连接在一起时出错,无法解决此问题。我得到的错误是: 无法从用法推断方法“Queryable.JoinIQueryable、IEnumerable、Expression>、Expression>、Expression>”的类型参数。尝试显式指定类型参数 这三个变量、InventoryWares、InventoryDetails和Items是我试图连接在一起的三个表。红色的曲线出现在我的第二个join语句中 我认为添加完整的参数名将有助于明确说明我希望使用的内容,但这不起作用。这应

我在尝试将这三个表连接在一起时出错,无法解决此问题。我得到的错误是:

无法从用法推断方法“Queryable.JoinIQueryable、IEnumerable、Expression>、Expression>、Expression>”的类型参数。尝试显式指定类型参数

这三个变量、InventoryWares、InventoryDetails和Items是我试图连接在一起的三个表。红色的曲线出现在我的第二个join语句中


我认为添加完整的参数名将有助于明确说明我希望使用的内容,但这不起作用。

这应该适用于您:

var InventoryWares = SOM5Context.InventoryWares;
var InventoryDetails = SOM5Context.InventoryDetails;
var Items = SOM5Context.Items;

var goods = InventoryWares.Join(InventoryDetails,
                                p => p.PalletID,
                                x => x.PalletID,
                                (InventoryWare, InventoryDetail) => new { InventoryWare, InventoryDetail }).Join(Items.ToList(),
                                InventoryWare => InventoryWare.InventoryWare,
                                InventoryDetail => InventoryDetail.ItemNumber,
                                (WareItemNumber, ItemNumber) => new { WareItemNumber, ItemNumber })
                                .Select();
货物将是一个可计量的物品,其中每个物品将有3个属性: {InventoryWare,InventoryDetail,Item}


如果这不是您期望的查询,请提供有关您试图实现的目标的更多详细信息。

为什么。JoinItems.ToList。。。?将更改为.JoinItems。。。修复您的问题?我已删除了.ToList,但仍然有相同的错误。我不知道是否有什么问题。我想加入以下项目:IW.PalletID=InD.PalletID和IW.ItemNumber=Itm.ItemNumber IW是库存商品,ID是库存详细信息,Itm,是您无法使用的项目吗?EF和LINQ的好处之一就是不必编写难看的连接代码。谢谢Tiago Sousa!成功了-非常感谢您的帮助@特立独行-如果蒂亚戈的回答解决了你的问题,请不要忘记将其标记为答案。这将使将来试图解决类似问题的人更容易知道他们应该尝试这种解决方案
var goods = InventoryWares.Join(InventoryDetails,
        p => p.PalletID,
        x => x.PalletID,
        (InventoryWare, InventoryDetail) => new {InventoryWare, InventoryDetail})
    .Join(Items,
        x => x.InventoryWare.ItemNumber,
        Item => Item.ItemNumber,
        (x, Item) => new {x.InventoryWare, x.InventoryDetail, Item});