EF查询:如何约束嵌套项目

问题描述

| 请帮我写一个关于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”且包含所有商品的产品。 谢谢, 德米特里     

解决方法

那是因为您正在加载产品的所有项目。无论如何,我都会尝试采用其他方式,即主查询可能是这样的
from i in items
where i.Product.Name == \"AAA\" && i.Cost == 100
select i
所有这些项目应具有相同的产品,并且如果需要,您也可以急于加载该产品。
ctx.Items.Include(\"Products\")