EF 查询:如何约束嵌套项

发布于 2024-11-09 07:17:14 字数 366 浏览 0 评论 0原文

请帮我写一个 EF 查询。

我有下表:

Products
 ProductId
 Name

Items
  ProductId
  Cost

如何选择名称为“AAA”的产品并且仅选择成本等于 100 的商品?

我写了以下内容:

ctx.Products.Include("Items").Where(p=>p.Name == "AAA" && p.Items.Any(i=>i.Cost == 100)).FirstOrDefault()

但结果我得到了名为“AAA”的产品和所有项目。

谢谢, 德米特里

Please help me write a query for EF.

I have the following tables:

Products
 ProductId
 Name

Items
  ProductId
  Cost

How to select product with name 'AAA' and ONLY with items which cost equals to 100?

I wrote the following:

ctx.Products.Include("Items").Where(p=>p.Name == "AAA" && p.Items.Any(i=>i.Cost == 100)).FirstOrDefault()

but as a result I got Product with name "AAA" and with ALL items.

Thanks,
Dmitriy

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

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

发布评论

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

评论(1

猫九 2024-11-16 07:17:14

那是因为您正在加载产品的所有项目。无论如何,我会尝试采用其他方式,即主查询可能是这样的

from i in items
where i.Product.Name == "AAA" && i.Cost == 100
select i

所有这些项目都应该具有相同的产品,如果需要,您也可以急切地加载该产品。

ctx.Items.Include("Products")

That's because you are loading all items for products. In any case, I'd try going the other way, i.e. the main query might be something like this

from i in items
where i.Product.Name == "AAA" && i.Cost == 100
select i

All these items should have the same product and you can eager load the product too if you need.

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