按日期排序并转换为字符串列表

时间:2016-03-04 13:16:08

标签: c# asp.net linq

我有以下代码:

List<EncryptionReport> result = null;
result = m_encryptionSvc.GetReportsFromRefnr(tuples);

result = result
  .OrderByDecending(e => e.Acc_date)
  .ThenBy(e => e.Acc_date.ToString("YYYY-mm-dd H:mm:ss"))
  .ToList();

我想要的是按日期降序排序,然后将日期解析为字符串格式。但解析不起作用。

如何在排序后将日期解析为字符串?

解决方案

      var test = result.OrderBy(e => e.Acc_date)
                    .Select(x => 
                        new 
                        { 
                            x.Accident_nr,
                            x.Encrypted,
                            x.ExistsInStrada,
                            x.Id,
                            x.Original,
                            x.Report_id,
                            x.ReportSource,
                            x.State,
                            @Acc_date = x.Acc_date.ToString("yyyy-MM-dd hh:mm:ss")
                        })
                    .ToList();

2 个答案:

答案 0 :(得分:3)

如果您只想要根据您的要求格式化Acc_date值的字符串列表,则需要在Select

之后致电OrderBy
List<string> dates = result.OrderByDescending(e => e.Acc_date)
                           .Select(x => x.Acc_date.ToString("YYYY-mm-dd H:mm:ss"))
                           .ToList();

当然,您无法将此回复分配给相同的result(列表)变量,但您需要单独的List<string>

答案 1 :(得分:1)

假设您想在排序后返回EncryptionReport列表。我会在EncryptionReport对象中创建另一个get get属性,它可以为你想要的日期字符串。

public class EncryptionReport {

    //Other properties


    public string Acc_date_formatted { get { return Acc_date.ToString("YYYY-mm-dd H:mm:ss");} ]
}

List<EncryptionReport> result = null;
result = m_encryptionSvc.GetReportsFromRefnr(tuples);

result = result
  .OrderByDecending(e => e.Acc_date)
  .ToList();