我有一个清单
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]);
}
答案 0 :(得分:2)
您可以使用List.Sort
和DateTime.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))