C#按日期排序数组元素

时间:2016-03-09 15:48:39

标签: c# arrays list sorting date

我有一个清单

List<string[]> myList = new List<string[]>();

它包含一个我希望按列表内的日期排序的数组。

string[] myArray = new string[3];

日期保存在数组中的第0位。

myArray[0] = (Convert.ToDateTime(Console.ReadLine())).ToString("yyyy/MM/dd");

当我的打印代码看起来像这样时,这怎么可能?

foreach (string[] element in myList) {
   Console.WriteLine("{0} {1} {2}", element[0], element[1], element[2]);
}

2 个答案:

答案 0 :(得分:2)

您可以使用List.SortDateTime.ParseExact

myList.Sort((arr1, arr2) => DateTime.ParseExact(arr1[0], "yyyy'/'MM'/'dd", null)
                 .CompareTo(DateTime.ParseExact(arr2[0], "yyyy'/'MM'/'dd", null)));

这假设所有格式都有效,否则您将获得例外。

答案 1 :(得分:0)

您应该构建一个表示数据的对象,然后将列表作为此类的列表,而不是从任意字符串数组中访问数据。

public class MyObject
{
    public DateTime Date {get;set;}
    public string Param2  {get;set;}
    public string Param3  {get;set;}
}
List<MyObject> myList = new List<MyObject>();

在这种情况下,排序变得微不足道

foreach (var element in myList.OrderBy(x => x.Date))