У меня есть следующий оператор SQL, который я пытаюсь преобразовать в LINQ to Entities, но правильное решение намекает мне на данный момент:
select op.orders_products_id,
op.products_id,
op.products_model,
op.products_name,
op.products_price,
sum(op.products_quantity) as quantity,
sum(op.count_quantity) as count_quantity
from orders_products op
where orders_id = 574214
group by op.products_id
order by op.products_model, op.orders_products_id
В этом конкретном операторе SQL orders_products_id являетсяпервичный ключ для таблицы, поэтому, когда мы группируем по значению products_id, он свернет все повторяющиеся строки в таблице для того же product_id, и результатом столбца количества будет общее количество для всех столбцов.Учитывая оператор заказа, op.orders_products_id должен в конечном итоге быть идентификатором первой строки для каждого конкретного продукта, который имеет несколько записей в одной таблице.
Чтобы выбрать строки, используя LINQ to Entities без группировки, ябудет использовать следующий код:
using (var uow = new StoreEntities()) {
var query = from op in uow.OrderProducts
where op.OrderID == 574214
orderby op.Model, op.OrderProductID
select new {
ID = op.OrderProductID,
ProductID = op.ProductID,
Model = op.Model,
Name = op.Name,
SalePrice = op.SalePrice,
Qty = op.Qty,
CountedQty = op.CountedQty,
};
var list = query.ToList();
}
Но в настоящий момент я совершенно заблудился относительно того, как бы я делал группировку, чтобы получить тот же результат, что и мой исходный SQL?Когда я делаю группировку в LINQ to Entities, результатом группировки является новая последовательность с ключом и деталями элементов для этого ключа.Как мне сгладить это, чтобы я мог получить результаты, аналогичные тому, как я написал исходный запрос SQL?