想象一下,使用xml,用户可以使用“gte”,“gt”,“lte”,“lt”或“eq”的任意组合以灵活的方式指定范围。
以下是一些例子
<rangeElement gte="0" lt="5" ... />
<rangeElement gt="3" lte="7" ... />
<rangeElement eq="5" ... />
<rangeElement gt="10.5" ... />
现在我需要的是两个类,Range和RangeCollection,可以处理这些。
Range类看起来像这样:
public class Range
{
public LowerBoundInclusive { get; set; }
public LowerBoundExclusive { get; set; }
public UpperBoundInclusive { get; set; }
public UpperBoundExclusive { get; set; }
public object Data { get; set; }
public Range(XElement xmlElement)
{
....
}
}
RangeCollection类应该有一些基本的方法来排序其范围,检测重叠并返回给定值的相应范围。
我玩过这个游戏,但事情很快变得非常复杂。有没有其他人看过这个的实现,还是想试一试?
顺便说一句。我知道有类似的线程可以解决范围但是它们没有充分处理“小于或等于”和“小于”之间的差异。
答案 0 :(得分:2)
您需要的是interval tree。找到implementation in C#并修改它以使其适合您的需求并不难。我没有看到“&lt; =”或只是“&lt;”的任何问题关系。