首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充列表上的lambda表达式

填充列表上的lambda表达式
EN

Stack Overflow用户
提问于 2010-02-02 07:10:08
回答 5查看 461关注 0票数 1

网站上有一些关于如何使用lambda表达式进行排序的帖子,但是我似乎无法让我的表达式正常工作。我正在尝试对已填充的列表进行重新排序。我认为我可以使用lambada表达式重新排列这个列表的顺序,这是错误的吗?

代码语言:javascript
复制
QuarterMileTimes.OrderByDescending(c => c.PquartermileTime); 

我想知道这是不是因为PquartermileTime是一个字符串?我在约会时也试过这句话

代码语言:javascript
复制
QuarterMileTimes.orderBy(c => c.RaceDay);

还是不走运,我哪里错了?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-02 07:14:13

当您调用OrderByDescending时,该方法返回一个新的 IEnumerable<T> -它不会对集合进行就地重新排序。

尝试执行以下操作:

代码语言:javascript
复制
QuarterMileTimes = QuarterMileTimes.OrderByDescending(c => c.PquartermileTime).ToList();

(这是如果您的集合是一个List<T>...)

票数 5
EN

Stack Overflow用户

发布于 2010-02-02 07:14:03

OrderByDescending (以及所有其他Enumerable扩展方法)的结果是一个按照您所描述的顺序投影源数据的IEnumerable<T>。它不会以任何方式改变原始数据。

如果您愿意,可以使用ToList()扩展方法从该结果创建一个新的List<T>,并将其分配回原始变量。

代码语言:javascript
复制
QuarterMileTimes = QuarterMileTimes.OrderByDescending(/*...*/).ToList();

(当然,这是假设QuarterMileTimes是一个List<T>)

答案的要点是noOrderByDescending不会以任何方式改变数据源。

票数 1
EN

Stack Overflow用户

发布于 2010-02-02 07:14:33

你要把它赋给一个新的变量,不是吗?

代码语言:javascript
复制
var sortedTimes = QuarterMileTimes.OrderByDescending(c => c.PquartermileTime);

它不像List.Sort方法那样对现有列表进行排序。

该方法的结果必须赋给一个变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2180753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档