У меня большая коллекция предметов
public class Restriction
{
// which days this restriction applies to
public DateTime From { get; set; }
public DateTime To { get; set; }
// valid applicable restriction range
public int Minimum { get; set; }
public int Maximum { get; set; }
}
Я мог бы тогда иметь
IList<Restricton> restrictions;
и затем поиск ограничений, которые применяются в определенный день
restrictions.Where(r => day >= r.From && day <= r.To);
Выпуск
Полагаю, использование IList<T>
- не лучший вариант, потому что я буду много раз искать эти ограничения, и каждый раз, когда я буду вызывать метод LINQ .Where
, вся коллекция будет перечисляться и фильтроваться.
Из моих знаний SQL я знаю, что сканирование таблиц всегда хуже, чем сканирование индекса, поэтому я хотел бы применить подобную логику здесь. Вместо того, чтобы каждый раз перечислять всю коллекцию, я бы предпочел более интеллектуальную фильтрацию.
Вопрос
Что может быть лучше ( быстрее ) для перечисления моих ограничений, чтобы мой алгоритм не перечислял их каждый раз, когда я хотел бы отфильтровать несколько?
Я думал о IDictionary<K,V>
, но все равно нужно будет отсканировать их все, потому что мои ограничения установлены не на день, а на дневной диапазон.
Что бы вы предложили?