实体框架中的多对多排序

时间:2010-01-22 23:13:52

标签: entity-framework

我的应用程序有一个实体框架模型,其中包含多对多关系,如下所示:

ProductGroup: 
    Scalar: Id, Name
    Navigation: ProductGroupProduct
Product: 
    Scalar: Id, Sku, Description, etc.
    Navigation: ProductGroupProduct
ProductGroupProduct: 
    Scalar: ProductGroupId, ProductId, Position
    Navigation: Product, ProductGroup

请注意中间表如何具有名为Position的标量属性,该属性指定产品在产品组中的显示顺序。

如何编写LINQ查询,返回按Position属性排序的给定产品组中的产品列表?如果我写的是好的SQL,我会写这样的东西:

SELECT p.Id, p.Sku, p.Description
FROM Product p
INNER JOIN ProductGroupProduct pgp ON p.Id = pgp.ProductId 
WHERE pgp.ProductGroupId = @MyProductGroupId 
ORDER BY pgp.Position

但是我无法想出LINQ。

1 个答案:

答案 0 :(得分:3)

嗯,你的SQL不起作用,因为没有ProductGroup.Position

但我想你想要:

var q = from pgp in Context.ProductGroupProducts
        where pgp.ProductGroup.Id == id
        orderby pgp.Position
        select pgp.Product;