【问题标题】:Entity Framework select from link table with list实体框架从带有列表的链接表中选择
【发布时间】:2026-01-24 04:10:01
【问题描述】:

使用如下数据库表结构:

订单表:

OrderId
OrderName

OrderItem表格:

OrderId
ItemId

项目表:

ItemId
ItemName

我有一个“订单”实体,它有一个“项目”集合。我需要做的是退回所有包含某些物品的订单。示例:所有带有 id 为 1、4 和 5 的商品的订单(我不在乎它是否还有其他商品)。我目前在 List 对象中有选定的 id(虽然它不一定是列表)。我用“包含”方法尝试了各种想法,但无济于事。

因为 OrderItem 是一个链接表,我无法将其作为实体本身进行访问。如果可以的话,我想我可以做到:

context.OrderItems.Where(m => selectedIds.Contains(m.ItemId))

或类似的东西。

有没有一种方法可以在单个查询中执行此操作而不必循环结果?

谢谢

【问题讨论】:

    标签: .net entity-framework select linq-to-entities


    【解决方案1】:
    context.Orders.Where(o => o.Items.Any(i => selectedIds.Contains(i.ItemId)))
    

    这需要 EF 4。

    【讨论】: