在 LINQ 中通过重写分组时的 SQL 案例

问题描述

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

在 T-sql 查询中,有 group by 和 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 时重写案例。

解决方法

您可以添加准备步骤。

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

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

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

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