我有一个结构和一个列表如下,我只想根据日期对输入点进行排序。我使用了以下命令,但我看不到任何排序。
public struct Points
{
public Date Date;
public double Quantity;
}
_test = new List<Points>(InputPoints);
_test.OrderBy(t => t.Date);
答案 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();