网站上有一些关于如何使用lambda表达式进行排序的帖子,但是我似乎无法让我的表达式正常工作。我正在尝试对已填充的列表进行重新排序。我认为我可以使用lambada表达式重新排列这个列表的顺序,这是错误的吗?
QuarterMileTimes.OrderByDescending(c => c.PquartermileTime); 我想知道这是不是因为PquartermileTime是一个字符串?我在约会时也试过这句话
QuarterMileTimes.orderBy(c => c.RaceDay);还是不走运,我哪里错了?
发布于 2010-02-02 07:14:13
当您调用OrderByDescending时,该方法返回一个新的 IEnumerable<T> -它不会对集合进行就地重新排序。
尝试执行以下操作:
QuarterMileTimes = QuarterMileTimes.OrderByDescending(c => c.PquartermileTime).ToList();(这是如果您的集合是一个List<T>...)
发布于 2010-02-02 07:14:03
OrderByDescending (以及所有其他Enumerable扩展方法)的结果是一个按照您所描述的顺序投影源数据的IEnumerable<T>。它不会以任何方式改变原始数据。
如果您愿意,可以使用ToList()扩展方法从该结果创建一个新的List<T>,并将其分配回原始变量。
QuarterMileTimes = QuarterMileTimes.OrderByDescending(/*...*/).ToList();(当然,这是假设QuarterMileTimes是一个List<T>)
答案的要点是no,OrderByDescending不会以任何方式改变数据源。
发布于 2010-02-02 07:14:33
你要把它赋给一个新的变量,不是吗?
var sortedTimes = QuarterMileTimes.OrderByDescending(c => c.PquartermileTime);它不像List.Sort方法那样对现有列表进行排序。
该方法的结果必须赋给一个变量。
https://stackoverflow.com/questions/2180753
复制相似问题