【问题标题】:How to use OrderBy to sort a custom object ascending by Date如何使用 OrderBy 按日期升序对自定义对象进行排序
【发布时间】:2015-09-25 15:23:36
【问题描述】:

我有一个自定义对象的集合如下:

public struct Record {
    public string Caller { get; set; }
    public DateTime Started { get; set; }
    public string Dialed { get; set; }
    public decimal Duration { get; set; }
    public decimal Cost { get; set; }
    public string Location { get; set; }
    public Switch Switch { get; set; }
}

public static List<Record> Records { get; set; }

使用 LINQ,如何使用存储在 Record.Started 中的值按升序对 Records 进行排序?

【问题讨论】:

  • var sortedRecords = Records.OrderBy(r =&gt; r.Started)
  • 我只是想知道如何简单地搜索“LINQ 升序”并没有显示很多答案。我刚刚搜索了一下,第一个结果是在 Stackoverflow 上并回答了这个问题。
  • 这是关于 SO @Jashaszun 的一半问题
  • 混乱是我能找到的所有信息表明它返回一个字符串列表,而不是对象——所以我的印象是r =&gt; r.Started 只会返回一个Started 的列表而不是Record --- 例如这个 >> stackoverflow.com/questions/18545988/…
  • @austinwernli 这是一种可悲的状况......

标签: c# linq sorting


【解决方案1】:

只需使用OrderBy 方法:

Records.OrderBy(record => record.Started)

或:

from r in Records
order by r.Started
select r

【讨论】:

    【解决方案2】:

    就这么简单吗?

    records.OrderBy(r=>r.Started)
    

    【讨论】:

    • 那不是只返回日期列表,而不是 Record 对象吗?
    • 不,如果你使用 Select() 会发生这种情况。
    • 现在更有意义了。这里的其他文章(可能是我的误解或真的没有澄清)具有更简单的性质排序 或其他任何内容,因此返回该类型的数组。我不知道它总是返回传递的任何自定义类型。
    • 它实际上返回一个IOrderedEnumerable&lt;Record&gt;,并且排序仅在序列物化时执行msdn.microsoft.com/en-us/library/vstudio/…见备注
    猜你喜欢
    • 2011-11-22
    • 2012-02-06
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多