我的代码中有一行正在排序一堆字符串。正在排序的项目是数据库查询的结果,该数据库查询会返回一组标题,其中搜索短语位于标题列和关键字列中。我想通过搜索短语的第一次出现来对它们进行排序,但是当搜索短语不在标题中时,它们的索引为-1,它们被置于顶部。我希望结果在底部的标题中没有搜索短语。
q = "orange";
IQueryable.OrderBy(a => a.title.IndexOf(q));
答案 0 :(得分:4)
问题是-1
被解释为较低的数字,因此它们被推到结果的前面。而是将-1
(又名未找到)更改为最大可能的数字并将元素推送到后面
q = "orange";
IQueryable.OrderBy(a => {
var index = a.title.IndexOf(q);
return index < 0 ? Int32.MaxValue : index; });