【问题标题】:SQL Case When in Group By Rewrite in LINQ在 LINQ 中按重写分组时的 SQL 案例
【发布时间】:2021-05-24 11:49:50
【问题描述】:

我有一个 SQL Server 查询,我使用 LINQ 在 c# 中重写了这个查询。

在 T-SQL 查询中,有group by with case when。如何在 C# 中重写查询?

  GROUP BY CAST(ISNULL(EnrollmentDate, CreatedDate) AS DATE),
                   (
                    CASE 
                        WHEN ISNULL(AccountId, 0) = 0
                            THEN [UserId]
                        ELSE AcoountId
                        END
                    )

我试过了;

  .GroupBy(t => new { (t.EnrollmentDate ?? t.CreatedDate).Date, })

但是在group by的时候我不能重写case。

【问题讨论】:

    标签: c# sql-to-linq-conversion


    【解决方案1】:

    您可以添加准备步骤。

    您可以使用 Tuple(string, T) 包装您的对象。

    Item1 中,您将根据逻辑为键设置所需的值:

    CASE 
                            WHEN ISNULL(AccountId, 0) = 0
                                THEN [UserId]
                            ELSE AcoountId
                            END
    

    在第二步中,您可以根据需要创建组。

    【讨论】:

    • 那么,如何在查询中实现新对象。
    • 类似Item1 = AccountId ?? UserId
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多