按字符串列值作为日期时间对列表进行排序

时间:2018-10-03 14:19:54

标签: c# asp.net-mvc string datetime asp.net-mvc-4

我有以下要按column0排序的列表(myListOfRecords),该列表包含以以下格式表示日期时间的字符串值:MM/dd/YYYY hh:mm:ss tt

public class ViewModel
{
    public string Column0 { get; set; }
    public string Column1 { get; set; }
}

IList<ViewModel> myListOfRecords

如何在不更改ViewModel类型的情况下按字符串列值作为日期时间对该列表进行排序?

1 个答案:

答案 0 :(得分:1)

您可以尝试创建DateTime.TryParseExact以使您的客户使用DateTime格式的函数并返回Datetime

static DateTime GetDate(string Column0) {
    DateTime dt;
    if (!DateTime.TryParseExact(Column0, "MM/dd/YYYY hh:mm:ss tt",
               CultureInfo.InvariantCulture,
               DateTimeStyles.None, out dt))
    {
        dt = DateTime.MinValue;
    }

    return dt;
}

然后使用linq OrderBy并使用GetDateColumn0Datetime

IList<ViewModel> myListOfRecords = new List<ViewModel>();

myListOfRecords.OrderBy(x => GetDate(x.Column0));

c# online

注意

我建议您使用Datetime而不是string保存日期时间值。