2

以下のクエリで値-1(IndexOfwhen txtがアイテムに見つからない場合)をフィルタリングする方法はありますか?

var sortedArray = array.OrderBy (item => item.IndexOf(txt)).ToArray();

どんなポインタも役に立ちます。

Whereを使用すると、2回使用することになりますが、1回だけIndexOf使用する方法はありIndexOfますか?

4

3 に答える 3

3

同じことをIndexOf2回行う必要がないようにするには、次のようにします。

var sortedArray = (from a in array
                  let i = a.IndexOf("txt")
                  where i >= 0
                  orderby i
                  select a).ToArray();
于 2013-01-21T19:53:05.583 に答える
1

を使用Whereして述語を実行し、OrderBy後で使用できます。

var sortedArray =
    array.Where   (item => item.IndexOf("txt") != -1)
         .OrderBy (item => item.IndexOf("txt")).ToArray();
于 2013-01-21T19:48:08.747 に答える
1

最も簡単な方法は、.Where()最初に句を配置することです。

var sortedArray = array.Where (item => item.IndexOf(txt) != -1)
                       .OrderBy (item => item.IndexOf(txt))
                       .ToArray();

ただし、これは2回検索しているため、大きな配列または配列内の大きなデータに顕著なパフォーマンスの影響を与える可能性があります。

于 2013-01-21T19:48:53.237 に答える