范围的集合

时间:2009-01-22 01:16:50

标签: c# range collections

想象一下,使用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类应该有一些基本的方法来排序其范围,检测重叠并返回给定值的相应范围。

我玩过这个游戏,但事情很快变得非常复杂。有没有其他人看过这个的实现,还是想试一试?

顺便说一句。我知道有类似的线程可以解决范围但是它们没有充分处理“小于或等于”和“小于”之间的差异。

1 个答案:

答案 0 :(得分:2)

您需要的是interval tree。找到implementation in C#并修改它以使其适合您的需求并不难。我没有看到“&lt; =”或只是“&lt;”的任何问题关系。