对包含浮点数的字符串列表进行排序
c#
我有一个包含字段编号的对象列表。该字段是一个包含浮点数的字符串:0.5、0.2、10.0、2.2、2.1、1.1、1.0、2.12、1.14。我希望这个列表根据这个数字排序(后代),所以我有这个输出:10.0、2.2、2.12、2.1、1.14、1.1、1.0、0.5、0.2。
我试图这样做:
List<MyObject> sortedList = myUnsortedList.OrderyDescending(x => x.Number).ToList();
另外,我尝试过像这样使用 PadLeft (因为该用户建议/sf/answers/447756641/):
int maxlen = myUnsortedList.Max(x => x.Number.Length);
List<MyObject> sortedList = myUnsortedList.OrderyDescending(x => x.Number.PadLeft(maxlen, '0'));
但在这两种情况下,我都得到了错误的结果,例如:2.12、10.0、2.2、2.1、1.14、1.1、1.0、0.5、0.2。
你知道如何解决这个问题吗?
回答
问题出现了string,如果您存储 a ,为什么首先会有a double。您应该尽快解析它们(或防止它们是您加载它们的字符串)。
但是,您可以随时尝试在之后解析它们:
List<MyObject> sortedList = myUnsortedList
.OrderyDescending(x => double.Parse(x.Number))
.ToList();
如果您不知道它们是否具有所有有效格式,您可以使用double.TryParse. 也许您需要将适当的传递CultureInfo给double.Parse(例如,如果您当前的文化使用逗号作为小数点分隔符)。