有没有办法在下面的查询中过滤值 -1(来自IndexOf
when txt not found in item)?
var sortedArray = array.OrderBy (item => item.IndexOf(txt)).ToArray();
任何指针都会有所帮助。
如果我使用Where,它会使用IndexOf
两次,有没有办法IndexOf
只使用一次?
为了避免必须做同样的IndexOf
两次,你可以这样做:
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();
但是,这可能会对大型数组或数组中的大型数据造成显着的性能影响,因为您现在要搜索它两次。