LINQ集团加盟

时间:2018-07-04 13:01:18

标签: c# sql linq

我正在努力解决一个相当简单的SQL select语句。如何将其转换为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 :(得分:0)

您的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
             };

(我不知道您的代码循环是什么意思。)