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

3

我有一个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();

我相信这个可以改进,但如何改进呢?我被难住了。有人能帮我吗?


这似乎是一个适合使用传统for循环的好选择。 - Dave Bish
@DaveBish:是的,你可能是对的。但我想提高自己在LINQ方面的专业知识(目前非常低),这就是为什么我问的原因。 - Aamir
@Aamir:你为什么认为这可以改进?看起来非常直接。 - Tim Schmelter
就我看来,它现在基本上看起来很好。 - Rup
@TimSchmelter:嗯...只是因为这看起来很丑陋/复杂 :) 所以你想说这不能被改进吗? - Aamir
@Aamir:不是。实际上它在做什么很明显。而且用for循环也不会更有效率、更易懂。 - Tim Schmelter
2个回答

5

3

这不是一种改进,而只是另一种完成同样事情的方法:

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

Nifty - 避免匿名对象的创建。+1 - Amy B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接