改进LINQ查询返回满足一定条件的项的索引

时间:2012-05-02 11:42:42

标签: c# linq c#-4.0

我有这个LINQ查询,它返回数组中所有项目的索引,其时间值(double)符合特定条件,如下面的查询所示。

var sonicIndices = completeLog.Select((item, index) => new { Item = item, Index = index })
            .Where(x => Math.Abs(x.Item.time - nullValue) > 0.001)
            .Select(item => item.Index).ToArray();

我很确定这可以改进,但如何?我很难过。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:5)

我没有看到任何特别的错误,它需要以什么方式变得更好? 如果您想要一个可重用的方法来处理此,请参阅:Getting a collection of index values using a LINQ query

答案 1 :(得分:3)

不是改进,而是另一种做同样事情的方法:

var sonicIndices = Enumerable.Range(0, completeLog.Length)
                   .Where(i => Math.Abs(completeLog[i].time - nullValue) > 0.001)
                   .ToArray();