Entity framework core 在.net core 3中按日期和其他字段获取第一条记录

Entity framework core 在.net core 3中按日期和其他字段获取第一条记录,entity-framework-core,Entity Framework Core,我正在尝试通过另一个字段“组”使用.NETCore3获取最新记录。在.NETCore2中,使用GroupBy可以实现这一点,但这不再有效,并且会导致异常-现在我正在寻找替代方案 实体如下所示: Client --> Messages 示例:消息表中的数据如下所示: |Date |Client |Message | |01-01-2019|A |Hello | |05-10-2019|A |Blah | |06-11-2019|A |New

我正在尝试通过另一个字段“组”使用.NETCore3获取最新记录。在.NETCore2中,使用GroupBy可以实现这一点,但这不再有效,并且会导致异常-现在我正在寻找替代方案

实体如下所示:

Client --> Messages
示例:消息表中的数据如下所示:

|Date      |Client |Message |
|01-01-2019|A      |Hello   |
|05-10-2019|A      |Blah    |
|06-11-2019|A      |Newest  |*Most recent by Date for Group A 
|03-01-2019|B      |Oldest  |
|10-05-2019|B      |Test    |
|20-10-2019|B      |Also New|*Most recent by Date for Group B
我希望答复仅包括:

|Date      |Client |Message |
|06-11-2019|A      |Newest  |*Most recent by Date for Group A
|20-10-2019|B      |Also New|*Most recent by Date for Group B
在此之前,我可以执行以下操作:

PersistenceManager.Context.Client.Include(c => c.Client).Where(x.Date >= date).GroupBy(x => x.ClientId).Select(g => g.OrderByDescending(y => y.Date).FirstOrDefault());
我读过一篇有趣的博客,建议从客户端实体开始,但我有很多客户端记录(数百条),如果没有记录,它会创建一个空值。在这种情况下,这似乎也不是正确的解决方案

Context.Client.Select(g => g.Messages.OrderBy(p => p.Name).FirstOrDefault())
                           .ToList();
在.NETCore3中解决此类问题的任何人

注意:我知道存在使用.AsEnumerable()的解决方案,但这会将查询转换为客户端查询,然后您可以在客户端查询中进行筛选/分组等。我要寻找的解决方案是在SQL Server上运行查询的地方。

这与参考的问题相同,但适用于早期EF版本

注:日期列为DD-MM-YYYY