c# - 如何在不使用 Min() Max() 的情况下使用 LINQ 从列表中获取最大和最小的数字?
问题描述
我一直在开发一个生成纬度和经度的应用程序,现在我需要能够找到最大值和最小值来确定数据集的上限和下限(以及东/西限制)。
我一直在尝试使用 Enumerable.Min 方法对它们进行排序,但它似乎不支持低于 -100.0000 的数字。
我的代码有误吗?如何以最有效的方式获得最大和最小的数字(列表大约有 150,000 多个条目)。
public static void Main()
{
var arr = new string[]{"-88.98559", "-94.98711", "-95.79591", "-98.04622", "100.0001", "-101.57691", "-110.00614"};
var arrList = new List<string>(){};
foreach (var value in arr)
{
arrList.Add(value);
}
Console.WriteLine(arrList.Min().ToString()); //Result : 100.0001, should be -110.00614
Console.WriteLine(arrList.Max().ToString()); //Result : -98.04622
}
解决方案
看起来您的问题是您在字符串值上使用了最小值/最大值。如果您要比较字符串“100”与“90”,那么“100”会更小,因为 1 < 9。(与“alice”与“bob”没有区别。a < b,即使“bob”更短)如果你想要进行数字比较,那么你必须使 arrList 成为浮点数或其他东西的数组,float.parse(value)
然后再添加到列表中。
推荐阅读
- ajax - axios ajax调用失败时如何访问状态码
- python - 基于单列重塑 Pandas 数据框
- java - 进度对话框在 android studio 中不起作用
- python - 为什么“去定义”在 Spyder 中不起作用?
- ruby-on-rails - 数组项的Rails部分不处理对象数据
- php - PHP / SQL 项目可以使用哪些源代码控制
- node.js - AWS Lambda 外部 URI 请求错误:连接 ETIMEDOUT
- emacs - emacs,弹丸和符号链接
- android - Android Studio 中的图形视图布局为空白
- android - 是什么导致签名的 apk 构建失败 - app:transformClassesAndResourcesWithProguardForRelease