2016-03-04 58 views
1

我有下面的代码:按降序排列排序按日期,并转换为字符串列表

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(); 
+0

日期并不需要“的解析”为字符串,只是将它们转换'的ToString()' – Plutonix

+1

你是不是想通过这种格式化字符串再次进行排序?或者你只是试图将日期列表转换为字符串列表? –

+0

请更好地解释你的意图。你的意思是你想要一个表示EncryptionReport列表的Acc_date字段中日期的字符串列表吗? – Steve

回答

4

如果你只是想要一个字符串列表将根据您的需要格式化你的Acc_date值,那么你需要的OrderBy

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

当然之后调用Select您不能将此返回分配给相同的result(列表)变量,但您需要单独的List<string>

+0

所以我不能在同一个名单上完成这个? – Bryan

+0

@Bryan他们是两种不同的类型。什么目的 ?如果你在OrderBy之后指定了返回值,那么你的列表已经排序了,不需要在同一个字段上运行另一种排序 – Steve

+0

purpopse将列表数据显示到一个jQuery数据表中在UI中。但是当我显示Acc_date时,我在数据表中得到了错误的格式。 Datatable无法处理日期时间类型,所以我必须将其转换为字符串顺序才能获得正确的结果。 – Bryan

2

假设您想要在排序后取回EncryptionReport的列表。我会在EncryptionReport对象中创建另一个获取唯一属性,该属性会缩短您想要的日期字符串。

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(); 
+0

正如我在下面的评论中所建议的 – Steve