以下のクエリで値-1(IndexOf
when txtがアイテムに見つからない場合)をフィルタリングする方法はありますか?
var sortedArray = array.OrderBy (item => item.IndexOf(txt)).ToArray();
どんなポインタも役に立ちます。
Whereを使用すると、2回使用することになりますが、1回だけIndexOf
使用する方法はありIndexOf
ますか?
同じことをIndexOf
2回行う必要がないようにするには、次のようにします。
var sortedArray = (from a in array
let i = a.IndexOf("txt")
where i >= 0
orderby i
select a).ToArray();
を使用Where
して述語を実行し、OrderBy
後で使用できます。
var sortedArray =
array.Where (item => item.IndexOf("txt") != -1)
.OrderBy (item => item.IndexOf("txt")).ToArray();
最も簡単な方法は、.Where()
最初に句を配置することです。
var sortedArray = array.Where (item => item.IndexOf(txt) != -1)
.OrderBy (item => item.IndexOf(txt))
.ToArray();
ただし、これは2回検索しているため、大きな配列または配列内の大きなデータに顕著なパフォーマンスの影響を与える可能性があります。