Помогите с LINQ to SQL сгруппировать по запросу - PullRequest
0 голосов
/ 11 мая 2011

Группа LINQ по синтаксису сбивает меня с толку.В TSQL я могу выбрать несколько столбцов и сгруппировать только один из них.С LINQ это делает меня группировкой по всем столбцам, с которыми я хочу работать.

Как я могу конвертировать этот TSQL в LINQ?

      SELECT         MAX(Item.itemID) AS Expr1, MAX(Item.title) AS Expr2,
 SUM(OrderDetail.quantity) AS Qty, MAX([Order].dateCreated) AS Expr3
        FROM            Payment INNER JOIN
                        [Order] ON Payment.ID = [Order].orderID INNER JOIN
                        OrderDetail ON [Order].orderID = OrderDetail.orderID INNER JOIN
                        Item ON OrderDetail.itemID = Item.itemID
        WHERE           ([Order].dateCreated >= '4 / 15 / 2011 12:00:00 AM') 
                        AND ([Order].dateCreated <= '4/15/2011 11:59:00 PM')
        GROUP BY Item.itemID
        ORDER BY Expr2



 var q = from p in db.Payments
                        join o in db.Orders on p.ID equals o.paymentID
                        join od in db.OrderDetails on o.orderID equals od.orderID
                        join i in db.Items on od.itemID equals i.itemID into j1
                        from j2 in j1
                        where o.dateCreated >= new DateTime(2011, 4, 15)
                        group j2 by j2.itemID into g
                        select new
                        {
                            g.Key 
                        };

1 Ответ

1 голос
/ 11 мая 2011
var query =
    from p in db.Payments
    join o in db.Orders
        on p.ID equals o.orderID
    join od in db.OrderDetails
        on o.orderID equals od.orderID
    join i in db.Items
        on od.itemID equals i.itemID
    where o.OrderDate.Date == new DateTime(2011, 4, 15)
    group new { i.itemID, i.title, od.quantity, o.dateCreated }
        by i.itemID into g
    let Expr1 = g.Max(x => x.itemID)
    let Expr2 = g.Max(x => x.title)
    let Qty = g.Sum(x => x.quantity)
    let Expr3 = g.Max(x => x.dateCreated)
    orderby Expr2
    select new { Expr1, Expr2, Qty, Expr3 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...