c# - 查找列表中最大元素的所有索引
问题描述
我有以下内容:
List<decimal> results = new List<decimal>();
...
result.Add(...);
...
Console.WriteLine($"Maximum gain: {gains.Max():f6} (#{results.IndexOf(gains.Max()) + 1})");
Console.WriteLine($"Maximum loss: {Math.Abs(losses.Min()):f6} (#{results.IndexOf(losses.Min()) + 1})");
IndexOf 仅查找第一个索引。如果有多个索引,我想显示所有索引。
具有多个最大索引的示例:
Maximum gain: 0.000700 (#15, #44)
具有一个索引的示例:
Maximum gain: 0.000700 (#13)
解决方案
首先,我将最大值提取到一个变量中,该变量可用于获取索引的 Linq 查询。然后使用它创建一个格式化的字符串列表,以在您输出到控制台的字符串中使用。
var maxGain = gains.Max();
var maxIndexes = string.Join(
", ",
results.Select((r,i) => new { Result = r, Index = i })
.Where(x => x.Result == maxGain)
.Select(x => $"#{x.Index +1}"));
Console.WriteLine($"Maximum gain: {maxGain:f6} ({maxIndexes})");
推荐阅读
- android - 更改语言环境后未在 android 中调用 onConfigurationChanged 方法
- mysql - Sequelize - dateonly vs date format
- unity3d - 如何将 SVG 导入 Unity 并仍然保留组(图层)?
- spring - Spring-WS:通过两个不同的端点路由 SOAP 请求
- css - 媒体查询。不使用 !important
- javascript - 如何在 express 中读取请求 cookie 中的 cookie 值?
- javascript - 表单自动完成没有下车
- javascript - 没有贝宝按钮的自定义贝宝表单反应?
- php - 读出一个 XML 文件并搜索一个特定的词。然后把这个词放在一页上。PHP 中的代码
- javascript - 在 React JS 中将 API 响应(对象)转换为数组