OrderBy Индекс строки с негативами внизу - PullRequest
3 голосов
/ 12 марта 2012

В моем коде есть строка, которая сортирует кучу строк.Сортируемые элементы являются результатом запроса к базе данных, который возвращает набор заголовков, где искомая фраза находится в столбце заголовка и столбце ключевых слов.Я хочу отсортировать их по первому вхождению поисковой фразы, но когда искомая фраза отсутствует в заголовке, у них индекс -1, и они помещаются вверху.Я хотел бы иметь результаты, которые не имеют поисковой фразы в заголовке внизу.

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

1 Ответ

4 голосов
/ 12 марта 2012

Проблема в том, что -1 интерпретируется как меньшее число, и, следовательно, они переносятся в начало результата. Вместо этого измените -1 (он же не найден) на максимально возможное число и переместите элементы назад

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