【问题标题】:SQL Query to LINQ Query SyntaxSQL 查询到 LINQ 查询语法
【发布时间】:2017-06-20 16:14:26
【问题描述】:

我有以下 SQL 查询,它为我提供月、年和计数。如何在 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(),
                                       };

【问题讨论】:

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

标签: c# sql .net linq


【解决方案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 逻辑。祝你有美好的一天

【讨论】:

  • 感谢您的帮助,我已经完成了一些小的更改。我已经用我的答案更新了这个问题。还要感谢不知道存在的 LINQPad 的链接。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多