选择值大于阈值的数组的索引

时间:2012-11-29 15:30:05

标签: c# linq

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

我如何在LINQ中实现这一目标?

我得到了它:

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

但是有更好的方法吗?

2 个答案:

答案 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);  

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