LINQ группировка с суммированием
От: Luckyman Россия  
Дата: 26.03.14 00:05
Оценка:
Здравствуйте. Есть вот такой LINQ:

 var query =
                    from p in db.Product
                    where p.SupplierID==1
                    group p by p.Category
                    into g
                    select new
                        {
                            g.Key.CategoryName,
                            Total = g.Count()
                        };


Не знаю как записать LINQ для генерации вот такого запроса, так как после группировки уже в выборке недоступно p, только g:
SELECT
    [t1].[CategoryName],
    Count(*) as [c1]
        Sum(p.UnitsInStock) as TotalStock
FROM
    [Products] [p]
        INNER JOIN [Categories] [t1] ON [p].[CategoryID] = [t1].[CategoryID]
WHERE
    [p].[SupplierID] = 1
GROUP BY
    [t1].[CategoryID],
    [t1].[CategoryName]
linq group sum
Re: LINQ группировка с суммированием
От: Luckyman Россия  
Дата: 26.03.14 22:27
Оценка:
Здравствуйте, Luckyman, Вы писали:

L>Здравствуйте. Есть вот такой LINQ:


L>
L> var query =
L>                    from p in db.Product
L>                    where p.SupplierID==1
L>                    group p by p.Category
L>                    into g
L>                    select new
L>                        {
L>                            g.Key.CategoryName,
L>                            Total = g.Count()
L>                        };
L>


L>Не знаю как записать LINQ для генерации вот такого запроса, так как после группировки уже в выборке недоступно p, только g:

L>
L>SELECT
L>    [t1].[CategoryName],
L>    Count(*) as [c1]
L>        Sum(p.UnitsInStock) as TotalStock
L>FROM
L>    [Products] [p]
L>        INNER JOIN [Categories] [t1] ON [p].[CategoryID] = [t1].[CategoryID]
L>WHERE
L>    [p].[SupplierID] = 1
L>GROUP BY
L>    [t1].[CategoryID],
L>    [t1].[CategoryName]
L>


Да, что-то затупил, получается вот так:
 var query =
                    from p in db.Product
                    where p.SupplierID==1
                    group p by p.Category.CategoryName
                    into g
                    select new
                        {
                            CategoryName = g.Key,
                            Count = g.Count(),
                            TotalStock = g.Sum(item=>item.UnitsInStock)
                        };
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.