OrderBy在按日期排序列表时不会更改列表

本文关键字:列表 OrderBy 日期 排序 | 更新日期: 2023-09-27 18:10:40

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

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

OrderBy在按日期排序列表时不会更改列表

调用_test.OrderBy(t => t.Date)并不会改变_test本身的内容,而是返回一个排序的IOrderedEnumerable<Points>。您可以使用ToList()将其转换回List<Points>。所以all in all

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

来自MSDN文档:

"此方法通过使用延迟执行实现。立即返回值是一个对象,它存储执行操作所需的所有信息。通过直接调用GetEnumerator方法或使用visualc#中的foreach或visualbasic中的For Each方法枚举对象之前,此方法表示的查询不会执行。"

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

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