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