У меня есть большая коллекция объектов
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
не лучший вариант, потому что я буду выполнять много поисков по этим ограничениям и каждый раз вызывать метод LINQ . Где
вся коллекция будет перечисляться и фильтруется.
Из имеющихся у меня знаний SQL я знаю, что сканирование таблицы всегда хуже, чем сканирование индекса, поэтому я хотел бы применить здесь аналогичную логику. Вместо того, чтобы каждый раз перечислять всю коллекцию, я бы предпочел более интеллектуальную фильтрацию.
Каким будет лучший ( более быстрый ) способ перечислить мои ограничения, чтобы мой алгоритм не работал перечислять по ним каждый раз, когда я хотел бы отфильтровать несколько?
Я думал о IDictionary
, но ему все равно нужно будет сканировать их все, потому что мои ограничения не установлены в день, а скорее за дневной диапазон.
Что бы вы посоветовали?