【发布时间】:2011-10-21 13:57:16
【问题描述】:
我有大量的对象
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>,但它仍然需要扫描它们,因为我的限制不是每天设置,而是每天范围。
你有什么建议?
【问题讨论】:
-
这里的第二个答案可以帮助吗:stackoverflow.com/questions/1042087/…
标签: c# collections filtering date-range