Сортировка «многие ко многим» в Entity Framework - PullRequest
3 голосов
/ 23 января 2010

Мое приложение имеет модель 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 Ответ

3 голосов
/ 23 января 2010

Хм, ваш SQL не будет работать, потому что нет ProductGroup.Position

Но я думаю вы хотите:

var q = from pgp in Context.ProductGroupProducts
        where pgp.ProductGroup.Id == id
        orderby pgp.Position
        select pgp.Product;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...