SQL查询到LINQ查询语法

时间:2017-06-20 16:14:26

标签: c# sql .net linq

我有以下SQL查询,它为我提供了Month,Year和Count。如何在LINQ查询语法中执行等效操作?

SQL

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

提前致谢

[更新工作答案]

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(),
                                       };

2 个答案:

答案 0 :(得分: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逻辑。祝你有愉快的一天

答案 1 :(得分:0)

我并不完全理解你的要求,但我会在linq中使用这样的分组。

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