我在列表中得到不同的时区时间。我想通过减号->加号(升序)来订购它们。例如,我给了一些国家时间。
+5:45 -8:00 0:00 -5:00 -7.30 +5:30
我希望此列表按此顺序排序。
-8:00 -7:00 -5:00 0:00 +5:30 +5:45
如何使用 LINQ OrderBy 做到这一点?
要点是,它应该首先按符号排序,而不是按数字排序。
谢谢,斯里拉姆
如果列表中的“时区时间”存储为字符串,您可以使用 OrderBy 对列表进行排序,如下所示(已编辑):
OrderBy(x => double.Parse(x.Replace(':', '.'), CultureInfo.InvariantCulture))
请注意,double.Parse("+1.234") 仍然有效,也就是说,您不必删除前面带有 '+' 符号的每个字符串前面的 '+' 符号。
你可以使用一个TimeSpan
类型:
.OrderBy(x => TimeSpan.Parse(x.TrimStart('+')))
请注意,虽然Parse
允许负值,但+
必须修剪任何前导。