EF 中的子查询噩梦



我真的非常非常努力地在LINQ以外的任何事物(例如SQL!)中处理应该很简单的查询

我有两个实体:

Product
ProductApprover
产品实体

在产品审批者实体上具有一对多关系,例如:

Product.Product审批者为我提供了与产品相关的所有 Product审批者实体。

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

我要执行的查询是:

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

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

试试这个(我想这是你的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 };

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

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

如果这不能满足你想要的效果,你能解释一下它在哪里掉下来吗?

相关内容

  • 没有找到相关文章

最新更新