SQL 查询 LINQ 表达式 - Entity Core Framework 3 + SQL 服务器
SQL query to LINQ expression - Entity Core Framework 3 + SQL Server
DECLARE @thirtyDaysAgo DATETIME = getdate()-30
SELECT
sum(case when CreatedWhen >= @thirtyDaysAgo then 1 else 0 end) lessThan30,
sum(case when CreatedWhen < @thirtyDaysAgo then 1 else 0 end) Greaterthan30
FROM ThisAwesomeTable
不知道如何将其转换为流畅的查询。
目的是计算 30 天前创建的行数,并计算同一查询中最近 30 天创建的行数。
你需要使用单例 GroupBy
技巧:
var ans = ThisAwesomeTable.GroupBy(r => 1)
.Select(rg => new {
lessThan30 = rg.Sum(r => r.CreatedWhen >= thirtyDaysAgo ? 1 : 0),
GreaterThan30 = rg.Sum(r => r.CreatedWhen < thirtyDaysAgo ? 1 : 0)
});
请注意,EF Core 3 生成的 SQL 与针对此查询列出的完全相同。
DECLARE @thirtyDaysAgo DATETIME = getdate()-30
SELECT
sum(case when CreatedWhen >= @thirtyDaysAgo then 1 else 0 end) lessThan30,
sum(case when CreatedWhen < @thirtyDaysAgo then 1 else 0 end) Greaterthan30
FROM ThisAwesomeTable
不知道如何将其转换为流畅的查询。
目的是计算 30 天前创建的行数,并计算同一查询中最近 30 天创建的行数。
你需要使用单例 GroupBy
技巧:
var ans = ThisAwesomeTable.GroupBy(r => 1)
.Select(rg => new {
lessThan30 = rg.Sum(r => r.CreatedWhen >= thirtyDaysAgo ? 1 : 0),
GreaterThan30 = rg.Sum(r => r.CreatedWhen < thirtyDaysAgo ? 1 : 0)
});
请注意,EF Core 3 生成的 SQL 与针对此查询列出的完全相同。