You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ将按日期排序取Top N分类的查询改写为无from流式写法

改写后的Fluent方法链实现(无from关键字)

return await _context.Products
    .OrderBy(x => x.DateCreated)
    .GroupBy(x => x.Category, x => x.Category)
    .OrderByDescending(g => g.Count())
    .Select(g => g.Key)
    .Take(3)
    .Select(element => ((Categories)element).ToString())
    .ToListAsync();

逻辑对应说明

上述代码和你原有的查询语法逻辑完全等价,每一步对应关系如下:

  • .OrderBy(x => x.DateCreated) 对应原查询的 orderby x.DateCreated
  • .GroupBy(x => x.Category, x => x.Category) 对应原查询的 group x.Category by x.Category into g,第一个参数指定分组键,第二个参数指定分组内要存储的元素
  • .OrderByDescending(g => g.Count()) 对应原查询分组后的 orderby g.Count() descending
  • .Select(g => g.Key) 对应原查询的 select g.Key

注意:原查询中先按DateCreated排序再分组的逻辑实际上是无效的,分组操作不会保留数据源的排序规则,如果你确实需要对分组内的元素排序,可以在GroupBy之后针对分组内的集合调用排序方法。


内容的提问来源于stack exchange,提问作者Anton Gridushko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 03:15:08