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

OrderBy排序无效且Resharper提示‘纯方法返回值未使用’问题求助

解决Resharper“Return value of pure method is not used”警告及排序不生效问题

嘿,我来帮你搞定这个问题!你遇到的警告和排序没生效的原因其实是同一个——LINQ的OrderBy方法不会修改原集合,而是返回一个排好序的新集合,你现在只是调用了它但没把返回值存下来,所以原listDetail根本没变化~

为什么会出现这个警告?

Resharper提示的“Return value of pure method is not used”,意思是你调用了一个「纯方法」(没有副作用、只返回结果的方法),但却没使用它的返回值。OrderBy就是典型的纯方法,它不会改变输入的List,只会生成一个新的有序序列。

两种解决方案

方案1:接收OrderBy的返回值并重新赋值

把OrderBy的结果存回原变量(注意要转成List,因为OrderBy返回的是IOrderedEnumerable<T>类型):

var listDetail = (from p in Expense.GetAll() where p.Group == "001" select new ExpenseViewModel() { ExpenseC = p.ExpenseC, Group = p.Group, Cost = p.Cost, }).ToList();
// 接收排序后的新集合并赋值
listDetail = listDetail.OrderBy(p => p.ContainerSizeI).ToList();

方案2:在初始查询时直接添加排序(更高效)

如果可以的话,直接在生成listDetail的查询里加上排序,这样不需要额外的步骤,性能也更好:

var listDetail = (from p in Expense.GetAll() 
                  where p.Group == "001" 
                  select new ExpenseViewModel() 
                  { 
                      ExpenseC = p.ExpenseC, 
                      Group = p.Group, 
                      Cost = p.Cost, 
                  })
                  // 直接在查询链中添加排序
                  .OrderBy(p => p.ContainerSizeI)
                  .ToList();

小提醒

大多数LINQ方法(比如Where、Select、OrderBy)都是无副作用的,它们不会修改原始集合,只会返回新的结果。以后使用这类方法时,一定要记得处理返回值哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:42:14