以下のクエリで値-1(IndexOfwhen txtがアイテムに見つからない場合)をフィルタリングする方法はありますか?
var sortedArray = array.OrderBy (item => item.IndexOf(txt)).ToArray();
どんなポインタも役に立ちます。
Whereを使用すると、2回使用することになりますが、1回だけIndexOf使用する方法はありIndexOfますか?
同じことをIndexOf2回行う必要がないようにするには、次のようにします。
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回検索しているため、大きな配列または配列内の大きなデータに顕著なパフォーマンスの影響を与える可能性があります。