小编Ton*_*org的帖子

使用 EF Core 6.0 和 SQL Server 进行 GroupBy

我有一个 Blazor Web 应用程序,它已经在现场工作了几个月。我想将数据库查询扩展到类似的“检测”组。

它是从 .NET 5 开始编写的,今天更新到 .NET 6,试图让它正常工作。

我想知道如何获取按TimeStamp(日期时间属性)排序的结果。我有一个使用内存数据库的工作示例,但生产将在 SQL Server 中进行。我不太擅长 SQL,但我在 Management Studio 中使用它一段时间了,但没有运气。

正确地注释了OrderByDescending()组的内容,但结果的顺序不正确。EF 翻译过程似乎完全删除了该行,它对生成的查询或结果集没有任何影响。

var results = context.Detections
//Line below makes no change ignored by SQL Server. Works when using in memory DB.
    //.OrderByDescending(det => det.TimeStamp) 
    .GroupBy(det => new
    {
        Year = det.TimeStamp.Year,
        Month = det.TimeStamp.Month,
        Day = det.TimeStamp.Day,
        Hour = det.TimeStamp.Hour,
    })
    .Select(grp => new
    {
        Count = grp.Count(),
        Detection = grp.OrderByDescending(det => det.TimeStamp).First(),
    })
//The following line will …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework blazor ef-core-6.0

7
推荐指数
1
解决办法
7249
查看次数

标签 统计

blazor ×1

c# ×1

ef-core-6.0 ×1

entity-framework ×1

sql-server ×1