我有一系列双打和一个阈值。 我想在我的数组中选择第一个索引,其中索引处的值大于阈值。
我如何在LINQ
中实现这一目标?
我得到了它:
var n = acc_avg.Select((val, index) => new {Val = val, Index = index})
.Where(l => l.Val > threshold)
.First()
.Index
但是有更好的方法吗?
答案 0 :(得分:4)
您可以使用Array.FindIndex
:
var n = Array.FindIndex(acc_avg, x => x > threshold);
答案 1 :(得分:2)
你的解决方案看起来相当不错,但我相信如果序列中没有符合你标准的元素,它会抛出异常。我会考虑使用FirstOrDefault而不是First,并在访问之前测试null。
var n = acc_avg.Select((val,index) => new {Val= val, Index = index}).Where(l=> l.Val > threshold).FirstOrDefault();
if(n != null)
DoSomething(n.Index);
当然,如果您的对象已经有索引属性(或者序列中的位置对您不重要),您可以将其缩短为:
var n = acc_avg.FirstOrDefault(l => l > threshold);
但你可能知道这一点。 :)