数组列表中数据的排序c# Windows phone 7
本文关键字:Windows phone 排序 列表 数据 数组 | 更新日期: 2023-09-27 18:04:23
我正在尝试在数组列表中排序我的数据。
例如,数据格式如下:
"9:34 AM~Schedule 12" .
和我想要它排序仅根据时间 "9:34 AM~Schedule 12"。
下面是对它进行排序的代码,但它似乎不起作用:
Array.Sort(timeSplit, delegate(string first, string second, string third)
{
return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second), third);
});
问题几乎肯定是在您试图将字符串转换为日期时间的地方:
Convert.ToDateTime(first)
您的字符串不是'标准'格式。
我建议使用SubString删除"~Schedule"文本,然后用格式字符串解析:
var myDate = DateTime.ParseExact("9:34 AM~Schedule 12".Substring(0,7), "h:mm tt");
然后可以使用DateTime。
首先,您应该删除第三个字符串,因为排序委托只接受两个参数。
其次,您传递给它的数据不是有效的DateTime
,您应该首先将其转换为日期时间。
所以:
Array.Sort(timeSplit, delegate(string first, string second)
{
//assuming all data have the same format: "9:34 AM~Schedule 12" .
int firstLength = first.IndexOf("~");
int secondLength = second.indexOf("~");
return DateTime.Compare(Convert.ToDateTime(first.Substring(0, firstLength)), Convert.ToDateTime(second.Substring(0, secondLength)));
});
你可以尝试这样做:
string[] arr = new string[]
{
"9:34 AM~Schedule 1",
"11:34 PM~Schedule 12",
"9:34 AM~Schedule 3",
"10:14 AM~Schedule 10",
"9:34 AM~Schedule 2",
"9:30 PM~Schedule 12"
};
var ordered = from a in arr
let split = a.Split('~')
orderby Convert.ToDateTime(split[0]), split[1]
select a;
string[] orderedData = ordered.ToArray();