我有清单
List<double> nums = new List<double> {0.2, 5.0, 12.0};
Run Code Online (Sandbox Code Playgroud)
我试图找到element-element^2最大的元素。我可以跑
nums.Max(num => num - Math.Pow(num, 2))
Run Code Online (Sandbox Code Playgroud)
找到最大值,但如何才能获得该元素的索引,该索引在评估时标识为产生最大值num - Math.Pow(num, 2)?IndexOf不起作用,因为返回的值Max不是应用时产生最大值的实际元素的值,而是整个表达式的值。
我已经查看了获取最大元素的索引,但这似乎涵盖了Max它返回实际元素并因此起作用的情况IndexOf。我只能想象有一种简单的方法可以解决我的情况,因为Max无论如何都会迭代列表。
有时用一个好的旧循环更容易做到
double maxValue = Double.MinValue;
int indexOfMax = -1;
for (int i = 0; i < nums.Count; i++) {
double x = nums[i];
double y = x - x * x;
if (y > maxValue) {
maxValue = y;
indexOfMax = i;
}
}
double element = nums[indexOfMax];
Run Code Online (Sandbox Code Playgroud)