OrderBy IndexOf底部带有底片的字符串

时间:2012-03-12 18:03:34

标签: linq sorting sql-order-by indexof

我的代码中有一行正在排序一堆字符串。正在排序的项目是数据库查询的结果,该数据库查询会返回一组标题,其中搜索短语位于标题列和关键字列中。我想通过搜索短语的第一次出现来对它们进行排序,但是当搜索短语不在标题中时,它们的索引为-1,它们被置于顶部。我希望结果在底部的标题中没有搜索短语。

q = "orange";
IQueryable.OrderBy(a => a.title.IndexOf(q));

1 个答案:

答案 0 :(得分:4)

问题是-1被解释为较低的数字,因此它们被推到结果的前面。而是将-1(又名未找到)更改为最大可能的数字并将元素推送到后面

q = "orange";
IQueryable.OrderBy(a => {
  var index = a.title.IndexOf(q);
  return index < 0 ? Int32.MaxValue : index; });