如何在C#中获取List<Tuple<double, double>>的最大值与最小值?
从List<Tuple<double, double>>获取元组元素的最值
你不需要额外解析为新列表,可以直接通过LINQ的Max()和Min()方法结合lambda表达式指定要比较的元组元素,这是最简洁高效的方式:
直接获取最值(推荐)
针对元组的第一个元素(Item1)和第二个元素(Item2),分别调用带选择器的最值方法即可:
// 初始化列表 var tupleList = new List<Tuple<double, double>>(); tupleList.Add(new Tuple<double, double>(11, 3)); tupleList.Add(new Tuple<double, double>(10, 5)); tupleList.Add(new Tuple<double, double>(12, 2)); tupleList.Add(new Tuple<double, double>(13, 0)); tupleList.Add(new Tuple<double, double>(15, 4)); tupleList.Add(new Tuple<double, double>(14, 1)); // 获取第一个元素的最值 double minItem1 = tupleList.Min(t => t.Item1); // 结果:10 double maxItem1 = tupleList.Max(t => t.Item1); // 结果:15 // 获取第二个元素的最值 double minItem2 = tupleList.Min(t => t.Item2); // 结果:0 double maxItem2 = tupleList.Max(t => t.Item2); // 结果:5
解析为新列表后获取最值(可选)
如果你确实需要先将元组元素提取为单独的列表,也可以这么做,但会额外占用内存创建新列表,适合需要复用该列表的场景:
// 提取所有第一个元素到新列表 var item1List = tupleList.Select(t => t.Item1).ToList(); double minItem1 = item1List.Min(); double maxItem1 = item1List.Max(); // 提取所有第二个元素到新列表 var item2List = tupleList.Select(t => t.Item2).ToList(); double minItem2 = item2List.Min(); double maxItem2 = item2List.Max();
两种方法都能得到你需要的结果,优先推荐第一种直接调用带选择器的最值方法,代码更简洁且性能更优。
内容的提问来源于stack exchange,提问作者Kuroyuki Hikari
相关产品推荐
相关产品推荐

