问题描述
|
请帮我写一个关于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\")