Помощь с LINQ group by

#asp.net #sql #linq #sql-server-2008

#asp.net #sql #linq #sql-server-2008

Вопрос:

Я пытаюсь воспроизвести этот SQL-запрос

 SELECT     COUNT(1) AS Records, MONTH(date) AS Month, YEAR(date) AS YEAR
FROM         tblBlogEntries
GROUP BY MONTH(date), YEAR(date)
ORDER BY year DESC, month DESC
  

В LINQ я дошел до этого:

 var q = from Rec in db.tblBlogEntries
        group Rec by new { Rec.date.Value.Year, Rec.date.Value.Month } into G
        select new {
            Month = G.Key.Month,
            Year = G.Key.Year
        };
  

Но я все еще новичок в LINQ и немного заблудился. Спасибо за любую помощь!

Ответ №1:

Попробуйте это вместо:

 var query = from rec in db.tblBlogEntries 
            group rec by new { rec.date.Value.Month,
                               rec.date.Value.Year } into g
            orderby g.Key.Year descending, g.Key.Month descending
            select new {
                Count = g.Count(),
                g.Key.Year,
                g.Key.Month
            };
  

Комментарии:

1. Работает замечательно, спасибо, Джон! Теперь я постепенно осваиваюсь с Linq, начиная по-настоящему любить его!