С точки зрения пользователя поведение должно быть понятным.Он не поймет, почему он получает только 5 записей без фильтра, но 25, когда входит в фильтр.Хороший способ решить эту проблему - предложить ему варианты в поле со списком или с помощью переключателей и т. Д., Где он может выбрать максимальное количество возвращаемых записей.(Например, 10, 30 или 100).У вас всегда будет .Where(filter).Take(maxRecords)
, где maxRecords
было выбрано пользователем.
В любом случае следует выполнить Take(max)
, независимо от того, входит пользователь в фильтр или нет, чтобы никогда не попасть в ситуацию.где фильтр возвращает больше записей, чем без фильтра.Это может произойти, если, например, пользователь введет «e» в качестве фильтра, то, вероятно, будет возвращен высокий процент записей.
Также сделайте результат воспроизводимым и понятным.Поэтому я также предлагаю применить заказ до .Take(max)
.
с фильтром
result = source
.Where(filter)
.OrderBy(order)
.Take(max);
или без фильтра
result = source
.OrderBy(order)
.Take(max);