浪歌 · 随笔 我的开发笔记

EFCore 支持groupby 后查询第一条数据

[efcore] 2023/1/19 15:20:05

在efcore3.0没法直接使用context.Model.GroupBy后查询第一条数据,可以这样操作:

var set = dbCtx.Set<Model>().AsNoTracking();
var sorted = set.OrderByDescending(x => x.Key);
var latestLogs = set.Select(x => x.DisKey)
    .Distinct()
    .SelectMany(x => sorted.Where(y => y.DisKey == x).Take(1));


在efcore6中已经支持GroupBy后再查询某条记录:参考链接


var people = context.People
    .Include(e => e.Shoes)
    .GroupBy(e => e.FirstName)
    .Select(
        g => g.OrderBy(e => e.FirstName)
            .ThenBy(e => e.LastName)
            .FirstOrDefault())
    .ToList();