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

LINQ条件OrderBy无效果,列表始终默认排序问题

LINQ条件排序无效的问题修复

核心问题很明确:LINQ的排序方法(比如OrderByDescending)不会修改原查询对象,而是返回一个包含排序规则的新IQueryable实例。你现在只是调用了排序方法,但没有把这个新实例重新赋值给query变量,所以原查询完全没应用任何排序逻辑,输出自然还是默认顺序。

修正后的代码如下:

var query =  _context.Groups
    .Where(gr => gr.Status != ((sbyte)ActiveStatus.DELETED) 
                && gr.OrganisationId == user.OrganisationId 
                && (search != null && gr.Name != null ? gr.Name.Contains(search) : true)
                )
    .Select(GroupReportModel.Projection);

// 关键:将排序后的新查询对象赋值回query
if(!pager.Sort.HasValue || pager.Sort.Value == ((int)Sort.MODIFIED))
    query = query.OrderByDescending(gr => gr.Created.Date);

if(pager.Sort.Value == ((int)Sort.NAME))    
    query = query.OrderByDescending(gr => gr.Name);

pager.TotalRecords = query.Count(); 
var list = query.Skip(pager.PageCount != null ? pager.PageCount.Value * pager.Page.Value : 0)
    .Take(pager.PageCount != null ? pager.PageCount.Value : 0)
    .ToList();

额外优化:你原来代码里的true == true属于冗余写法,直接写true即可,上面的代码已经帮你修正了这一点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:05:25