【问题标题】:Entity Framework Joining 3 Tables Together将 3 个表连接在一起的实体框架
【发布时间】:2017-09-27 16:51:58
【问题描述】:
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 是我要连接在一起的三个表。红色波浪线出现在我的第二个 join 语句中。

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

【问题讨论】:

  • 为什么.Join(Items.ToList() ...?更改为.Join(Items, ... 会解决您的问题吗?
  • 我摆脱了 .ToList(),但仍然有同样的错误。
  • 我想知道我是不是出了点问题。我想加入以下内容:IW.PalletID = InD.PalletID 和 IW.ItemNumber = Itm.ItemNumber(IW 是 InventoryWares,ID 是 InventoryDe​​tails,Itm 是 Items)
  • 所以你无法使用navigation properties? EF 和 LINQ 的好处之一是不必编写难看的 JOIN 代码。

标签: c# entity-framework join


【解决方案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});

Goods 将是一个 IQueryable,其中每个项目将具有 3 个属性: { InventoryWare, InventoryDetail, Item }

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

【讨论】:

  • 谢谢蒂亚戈·索萨!这很有效 - 非常感谢您的帮助!
  • @Maverick - 如果 Tiago 的回复解决了您的问题,请不要忘记将其标记为答案。这将使将来尝试解决类似问题的人们更容易知道他们应该尝试该解决方案
猜你喜欢
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多