Упорядочить текстовые файлы по названию, а затем по телу

У меня есть класс с именем TextFile с Title а также Body которые обе строки.

В моем приложении я хочу, чтобы конечный пользователь мог выполнять поиск по этим файлам.

Я хочу создать свой алгоритм, чтобы сначала упорядочивались файлы с поисковым термином в заголовке, а затем файлы с поисковым термином в теле.

Пример поиска: "Фермер"

Файл 1:

Название: "Фермеры в Европе"

Тело: содержит "Фермер" 50 раз

Файл 2:

Название: "Овощная земля"

Тело: содержит "Фермер" 10 раз

Файл 3:

Название: "Фермеры в мире"

Тело: содержит "Фермер" 10 раз

Результат будет (упорядочен по убыванию суммы):

  1. Файл 1
  2. Файл 3
  3. Файл 2

Мой вопрос: как мне начать упорядочивать, когда файлы имеют поисковый запрос в названии точное количество раз (см. Файл 1 и файл 3)?

Как бы я упорядочил сначала по названию, а затем по количеству вхождений в теле?

1 ответ

Просто напишите метод, как int performSearch(string searchFor, TextFile file),
Внутри метода вы ищете в полях.
Для подсчета совпадений используйте RegEx или посмотрите здесь: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/how-to-count-occurrences-of-a-word-in-a-string-linq

Просто сложите счет и вернитесь. Вы также можете определить некоторые веса.
Как пример: return (10 * countTitle) + (countBody);
Теперь вы можете отсортировать это так: textFileList.OrderBy(file => performSearch(searchValue, file)) и вы получите упорядоченный список ваших файлов.

Другие вопросы по тегам