LINQ Group By Join - PullRequest
       2

LINQ Group By Join

0 голосов
/ 04 июля 2018

Я борюсь с тем, что является довольно простым оператором выбора SQL. Как это можно перевести на LINQ?

select 
    o.IdOrder, Date, s.suma, name, adresa
from 
    Clients c 
join 
    Orders o on (c.IdClient = o.IdClient)
join 
    (select IdOrder, sum(price) suma
     from OrderProduct
     group by IdOrder) s on (o.IdOrder = s.IdOrder);

Если бы вы могли указать мне правильное направление, я был бы очень признателен.

Это то, что я имею до сих пор:

var y = from w in db.OrderProducts
        group w by w.IdOrder into TotaledOrder
        select new
                {
                    IdOrder = TotaledOrder.Key,
                    price = TotaledOrder.Sum(s => s.price)       
                };

var i = 0;
var cc = new dynamic[100];

foreach (var item in y)
{
    cc[i++] = db.Orders.Where(t => t.IdOrder == item.IdOrder)
            .Select(p => new
            {
                IdOrder = item.IdOrder,
                price = item.price,
            }).Single();
}

1 Ответ

0 голосов
/ 04 июля 2018

Ваш SQL на самом деле не дает представления о вашей базовой структуре. По предположению по именам столбцов:

var result = from o in db.Orders
             select new {
                  IDOrder = o.IDOrder,
                  Date = o.Date,
                  Suma = o.OrderProduct.Sum( op => op.Price),
                  Name = o.Client.Name,
                  Adresa = o.Client.Adresa
             };

(Понятия не имею, что вы имели в виду под циклом в вашем коде.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...