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(正如该用户建议的那样https://stackoverflow.com/a/6396523/3872144):
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
的 to double.Parse
(例如,如果您当前的文化使用逗号作为小数分隔符)。
推荐阅读
- regex - 用于查找替代重复字符的正则表达式
- qt - 将 QAction 连接到设计中的私人插槽?
- java - 即使使用 antMatchers.permitAll 作为登录 url,也会得到错误 MalformedJwtException
- c# - 如何将值添加到 2D 字典
- kubernetes - 为什么 kubernetes 服务 ip 不能暴露后端端口但主机 ip
- caching - Google lighthouse - 使用高效的 webp 缓存策略为静态资产提供服务
- powershell - 如何在 Azure DevOps 上的 Windows 管道中为 Go 生成 syso 文件
- javascript - AddEventListener 被触发但改变了一个 Div 的 UI 而不是另一个
- python - 使用 pyMC3 计算贝叶斯网络中给定数据的参数概率
- java - RecycleView 的新活动中单击的项目不正确