【发布时间】:2015-11-25 23:22:26
【问题描述】:
我有一个结构和一个列表如下,我只是想根据日期对输入点进行排序。我使用了以下命令,但看不到任何排序。
public struct Points
{
public Date Date;
public double Quantity;
}
_test = new List<Points>(InputPoints);
_test.OrderBy(t => t.Date);
【问题讨论】:
我有一个结构和一个列表如下,我只是想根据日期对输入点进行排序。我使用了以下命令,但看不到任何排序。
public struct Points
{
public Date Date;
public double Quantity;
}
_test = new List<Points>(InputPoints);
_test.OrderBy(t => t.Date);
【问题讨论】:
调用_test.OrderBy(t => t.Date) 确实不会改变_test 本身的内容,而是返回一个排序的IOrderedEnumerable<Points>。您可以使用ToList() 将其转回List<Points>。总而言之
_test = _test.OrderBy(t => t.Date).ToList();
应该做你想做的。
【讨论】:
IOrderedEnumerable<Points>。
来自 MSDN 文档:
"该方法是通过延迟执行来实现的。立即返回值是一个对象,该对象存储了执行该操作所需的所有信息。该方法表示的查询在通过调用枚举该对象之前不会执行直接使用它的 GetEnumerator 方法,或者使用 Visual C# 中的 foreach 或 Visual Basic 中的 For Each 方法。"
这意味着您必须使用 OrderBy() 返回的值才能获得排序结果。
【讨论】:
_test =_test.OrderBy(t => t.Date).ToList();
【讨论】: