Конвертировать SQL в выражение linq с количеством - PullRequest
4 голосов
/ 14 апреля 2010

Я пытаюсь преобразовать следующий SQL в выражение LINQ

SELECT    COUNT(ID) AS Count, MyCode
FROM      dbo.Archive
WHERE     DateSent>=@DateStartMonth AND DateSent<=@DateEndMonth
GROUP BY  MyCode

и я пытался использовать эту страницу в качестве примера:
Преобразование SQL, содержащего top, count, group и order, в LINQ (2 сущности)

Я понял это до сих пор, но застрял в понимании новой части

var res = (from p in db.Archives
           where (p.DateSent>= dateStartMonth) && (p.DateSent< dateToday)
           group p by p.MyCode into g
           select new { ??????MyCode = g.something?, MonthlyCount= g.Count() });

Заранее спасибо за помощь


UPDATE:
Можете ли вы объяснить, что такое g.Key? Я не понимаю, откуда взялась эта переменная или на что она ссылается? Я имею в виду, что если я группируюсь на 4 разных вещи? Как бы я отнесся к каждому из них?

var res = from archive in db.Archives
      where archive.DateSent >= dateStartMonth &&
            archive.DateSent < dateToday
      group archive by archive.MyCode, archive.Extra into archiveGrp
      select new 
      { 
           MyCode = archiveGrp.Key, 
           Extra = archiveGrp.???
           MonthlyCount = archiveGrp.Count() 
      };

Ответы [ 2 ]

6 голосов
/ 14 апреля 2010

Оператор LINQ ниже должен работать:

var res = from archive in db.Archives
          where archive.DateSent >= dateStartMonth &&
                archive.DateSent < dateToday
          group archive by archive.MyCode into archiveGrp
          select new 
          { 
               MyCode = archiveGrp.Key, 
               MonthlyCount = archiveGrp.Count() 
          };

Обратите внимание, что свойство Key будет содержать значение свойства, по которому выполняется группировка, в данном случае MyCode.

0 голосов
/ 14 апреля 2010
from p in archive
where p.DateSent >= dateStartMonth && p.DateSent < dateToday
group p by p.MyCode into g
select new { Count = g.Count(), MyCode = g.Key  }

выдает тот же вывод, что и ваш Sql в Linqpad

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