实体框架从带有列表的链接表中选择

发布于 2024-09-24 21:54:31 字数 622 浏览 4 评论 0原文

使用以下数据库表结构:

Order 表:

OrderId
OrderName

OrderItem 表:

OrderId
ItemId

Item 表:

ItemId
ItemName

我有一个包含“Items”的“Order”实体收藏。我需要做的是退回包含某些商品的所有订单。示例:所有订单的商品 ID 为:1、4 和 5(我不关心它是否还有其他商品)。我目前在 List 对象中拥有选定的 id(但它不一定是列表)。我尝试过使用“包含”方法的各种想法,但没有成功。

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

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

或者类似的事情。

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

谢谢

Using the following database table structure:

Order Table:

OrderId
OrderName

OrderItem Table:

OrderId
ItemId

Item Table:

ItemId
ItemName

I have an 'Order' entity that has an 'Items' collection. What I need to do is return all orders that contain certain items. Example: All orders with items with id: 1, 4 and 5 (I don't care if it has other items as well). I currently have the selected id's in a List object (it doesn't have to be a list though). I have tried various ideas with 'contains' method but to no avail.

Because OrderItem is a link table, I can't access it as an entity itself. If I could then presumably I could do:

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

or something like that.

Is there a way of doing this in a single query without having to loop around the results?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦在夏天 2024-10-01 21:54:31
context.Orders.Where(o => o.Items.Any(i => selectedIds.Contains(i.ItemId)))

这需要 EF 4。

context.Orders.Where(o => o.Items.Any(i => selectedIds.Contains(i.ItemId)))

This requires EF 4.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文