EF中的子查询噩梦

时间:2011-05-18 09:29:57

标签: linq entity-framework

我真的非常,在LINQ以外的其他任何事情上都应该是一个简单的查询(例如SQL!)

我有两个实体:

Product
ProductApprover

Product实体在ProductApprover实体上具有一对多关系,例如:

Product.ProductApprovers为我提供了与产品相关的所有ProductApprover实体。

通过我的Product实体上的ProductID列查询获取产品和关联的ProductApprover数据非常简单,因为关联的ProductApprover数据会自动捆绑到结果中,但是当我想通过查询数据来改变我的查询时出现问题我关联的ProductApprover实体。我已尝试使用'Where','Contains'和'Any',函数等来执行子查询,但似乎无法得到我想要的结果。

我想要执行的查询是:

SELECT * FROM Product p
INNER JOIN ProductApprover pa ON p.ProductId = pa.ProductId
WHERE p.ProductId = @id AND pa.Version = @version

有人可以帮帮我吗?提前谢谢你。

2 个答案:

答案 0 :(得分:1)

我怀疑你想要这样的东西:

var query = from product in db.Products
            where product.ProductId == productId
            select new { 
                Product = product,
                Approvers = product.Approvers.Where(pa => pa.Version == version)
            };

如果那不符合你的要求,你能解释一下它落在哪里吗?

答案 1 :(得分:1)

试试这个(我猜这是你对SQL查询的LINQ解释):

int id = 123;
int version = 555;

var results = from p in context.Products 
              join pa in context.ProductApprovers 
              on p.ProductId = pa.ProductId 
              where p.ProductId equals id && pa.Version equals version
              select new { Product = p, Approver = pa };