【问题标题】:OrderBy does not change list when sorting a list according to date [duplicate]根据日期对列表进行排序时,OrderBy 不会更改列表 [重复]
【发布时间】: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);

【问题讨论】:

    标签: c# list sorting


    【解决方案1】:

    调用_test.OrderBy(t =&gt; t.Date) 确实不会改变_test 本身的内容,而是返回一个排序的IOrderedEnumerable&lt;Points&gt;。您可以使用ToList() 将其转回List&lt;Points&gt;。总而言之

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

    应该做你想做的。

    【讨论】:

    • 具体返回一个IOrderedEnumerable&lt;Points&gt;
    • 完全正确,调整答案,谢谢!
    【解决方案2】:

    来自 MSDN 文档:

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

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

    【讨论】:

      【解决方案3】:
      _test =_test.OrderBy(t => t.Date).ToList();
      

      【讨论】:

      • 请解释一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2020-06-02
      • 2013-09-17
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多