实体框架将3个表连在一起

时间:2017-09-27 16:51:58

标签: c# entity-framework 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();

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

  

方法的类型参数' Queryable.Join(IQueryable,IEnumerable,Expression>,Expression>,Expression>)'无法从使用中推断出来。尝试明确指定类型参数。

三个变量,InventoryWaresInventoryDetailsItems是我想要连接在一起的三个表。红色波浪线是我第二次加入声明。

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

1 个答案:

答案 0 :(得分:1)

这应该适合你:

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});

商品将是IQueryable,其中每件商品将有3个属性: { InventoryWare, InventoryDetail, Item }

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