2

我有一个双精度数组和一个阈值。我想选择我的数组中的第一个索引,其中索引处的值大于阈值。

我如何做到这一点LINQ

我得到了它的工作:

var n = acc_avg.Select((val, index) => new {Val = val, Index = index})
               .Where(l => l.Val > threshold)
               .First()
               .Index

但是有更好的方法吗?

4

2 回答 2

4

您可以使用Array.FindIndex

var n = Array.FindIndex(acc_avg, x => x > threshold);
于 2012-11-29T15:51:29.237 回答
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);  

但你可能知道这一点。:)

于 2012-11-29T16:00:59.610 回答