问题描述
我有一个 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
在第二步中,您可以根据需要创建组。