我有一些字符串元素列表,如下所示:
{ Week 2.2012, Week 45.2014, Week 12.2011, ...}
{ Half 1.2013, Half 2.2015, Half 1.2010 ...}
{ Quarter 3.2005, Quarter 4.2010, Quarter 2.2011, ...}
知道这些字符串值无法解析为DateTime(?),我该如何对列表进行排序?
预期结果:
{ Week 12.2011, Week 2.2012, Week 45.2014, ...}
{ Half 1.2010, Half 1.2013, Half 2.2015, ...}
{ Quarter 3.2005, Quarter 4.2010, Quarter 2.2011, ...}
答案 0 :(得分:3)
使用自定义逻辑创建IComparer的实现,并将其传递给List.Sort方法。
答案 1 :(得分:0)
对于这个解决方案,我想创建一个返回日期的日期字符串解析器。下一步,你可以使用日期时间的元组排序列表。
答案 2 :(得分:0)
正如Andy所说,您可以使用linq:
对这些数据进行排序var sorted = list.Select(x => x.Split(' ', '.'))
.OrderBy(x => int.Parse(x[2])).ThenBy(x => int.Parse(x[1]))
.Select(x => $"{x[0]} {x[1]}.{x[2]}") //or string.Format("{0} {1}.{2}", x[0], x[1], x[2])
.ToList();
答案 3 :(得分:0)
实际上,看起来这些字符串可以解析为DateTime
。
据我所知:
Week 2.2012
是“2012年第二周”= 2012年1月15日
Half 2.2015
是“2015年的六个月”= 2015年7月1日(虽然不太确定“一半” - 它的含义可能略有不同)
Quarter 3.2005
是“2005年第三季度”= 2005年10月1日
等等。
因此,您可以解析这些值,将它们转换为DateTime
并对列表进行排序。