Моего приложения имеет модель Entity Framework, содержащую много-ко-многим вроде следующего:Многие ко многим сортировка в Entity Framework
ProductGroup:
Scalar: Id, Name
Navigation: ProductGroupProduct
Product:
Scalar: Id, Sku, Description, etc.
Navigation: ProductGroupProduct
ProductGroupProduct:
Scalar: ProductGroupId, ProductId, Position
Navigation: Product, ProductGroup
Обратите внимания, как промежуточная таблица имеет скалярное свойство Положения, что указывает порядок, в котором продукт должен отображаться в группе продуктов.
Как вы напишете запрос 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.
Сладкое, это то, что мне было нужно. Я продолжал пытаться прийти к нему со стороны Продукта. Мне не пришло в голову, что я могу начать посередине. Благодарю. О, и я исправлю SQL. Это то, что я получаю для ввода его в редактор здесь, не проверяя его в первую очередь. –
Вы можете сделать это и из продукта, но это намного сложнее: из p в Context.Products пусть pgp = (из pgp в p.ProductGroups, где pgp.ProductGroup.Id == id) .FirstOrDefault(), где pgp ! = null orderby pgp.Position select p; ' –