2012-05-02 14 views
3

このLINQクエリは、時間値(double)の配列内のすべてのアイテムのインデックスを、以下のクエリのように特定の条件を満たすものに戻します。特定の条件を満たすアイテムのインデックスを返すLINQクエリを改善しました

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(); 

これは改善できるとは思いますが、どうすればよいですか?私は困惑している。誰もがこれで私を助けることができますか?

+0

これは、ANのための良い候補のように見えます昔ながらのforループ –

+0

@DaveBish:うん、あなたは正しいかもしれません。しかし、私はLINQの専門知識を向上させたい(これは現在非常に低い)ので、私は尋ねた。 – Aamir

+0

@Aamir:なぜこれを改善できると思いますか?それはかなり簡単に見えます。 –

答えて

5

私はそれに特に間違ったことは何も見ませんが、どのようにして改善する必要がありますか? あなたが事のこの種類のための再利用可能な方法をしたい場合は、以下を参照してください。Getting a collection of index values using a LINQ query

+0

+1 Jon's Indexesどこに行くのが方法のように見えますか? – Rup

3

ない改善が、同じことを行うだけで、別の方法:

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

Nifty - anonオブジェクトの作成を避ける。 +1 –