根据日期排序列表时,OrderBy不会更改列表

时间:2015-08-31 20:30:29

标签: c# list sorting

我有一个结构和一个列表如下,我只想根据日期对输入点进行排序。我使用了以下命令,但我看不到任何排序。

public struct Points
{
    public Date Date;
    public double Quantity;
}
_test = new List<Points>(InputPoints);
_test.OrderBy(t => t.Date);

3 个答案:

答案 0 :(得分:6)

调用_test.OrderBy(t => t.Date) 会更改_test本身的内容,而是返回已排序的IOrderedEnumerable<Points>。您可以使用List<Points>将其重新转换为ToList()。总而言之

_test = _test.OrderBy(t => t.Date).ToList();

应该做你想做的事。

答案 1 :(得分:3)

来自MSDN文档:

&#34;此方法通过使用延迟执行来实现。立即返回值是一个对象,它存储执行操作所需的所有信息。在通过直接调用其GetEnumerator方法或在Visual C#中使用foreach或在Visual Basic中使用For each来枚举对象之前,不会执行此方法表示的查询。&#34;

这意味着您必须使用OrderBy()返回的值才能获得排序结果。

答案 2 :(得分:0)

_test =_test.OrderBy(t => t.Date).ToList();