我有一个双精度数组和一个阈值。我想选择我的数组中的第一个索引,其中索引处的值大于阈值。
我如何做到这一点LINQ
?
我得到了它的工作:
var n = acc_avg.Select((val, index) => new {Val = val, Index = index})
.Where(l => l.Val > threshold)
.First()
.Index
但是有更好的方法吗?
您可以使用Array.FindIndex
:
var n = Array.FindIndex(acc_avg, x => x > threshold);
您的解决方案在我看来相当不错,但我相信如果序列中没有符合您标准的元素,它会抛出异常。我会考虑 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);
但你可能知道这一点。:)