2017-06-20 147 views
0

我有以下SQL查询,它提供给我月份,年份和计数。我怎样才能在LINQ查询语法中做同样的事情?SQL查询到LINQ查询语法

SQL

SELECT 
    MONTH(ExpiryDate) MONTH, 
    YEAR(ExpiryDate) YEAR, 
    COUNT(*) COUNT 
FROM tblItems 
GROUP BY 
    YEAR(ExpiryDate), 
    MONTH(ExpiryDate) 

在此先感谢

[更新WORKING答案】

var query = from a in db.tblItems 
             group a by new 
             { 
              ((DateTime)a.ExpiryDate).Year, 
              ((DateTime)a.ExpiryDate).Month 
             } into bca 
             select new 
             { 
              MonthField = bca.Key.Month, 
              YearField = bca.Key.Year, 
              CountField = bca.Count(), 
             }; 
+0

LINQ太宽了。请提供更多的上下文 - LINQ to SQL,LINQ to Entities(EF,EF Core,哪个版本)等。 –

回答

1

请试试这个:

var info = from a in tblItems 
      group a by new 
      { 
       a.ExpiryDate.Year, 
       a.ExpiryDate.Month 
      } into bca 
      select new ConsolidatedData() 
      { 
       MonthField = bca.Key.ExpiryDate.Month, 
       YearField = bca.Key.ExpiryDate.Year, 
       CountField = bca.Count(), 
      }; 

您也可以尝试LINQPad来发展你的技能在LINQ,你已经有了SQL逻辑。祝你有个愉快的日子

+0

感谢您的支持。我用我的答案更新了这个问题。也感谢LINQPad的链接不知道存在。 – SliderUK

0

我没有完全理解你问什么,但我会用在这样的LINQ分组。

'from item in tblItems 
group item by year,month into group select group.firstordefault.month,group.firstordefault.year,group.count'