Вопрос

Представьте себе сценарий, в котором, используя 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 должен иметь какой-то базовый способ сортировки своих диапазонов, обнаружения совпадений и возврата соответствующего диапазона с заданным значением.

Я уже поиграл с этим, но все быстро становится дьявольски сложным.Кто-нибудь еще видел реализацию этого или хочет попробовать?

Кстати.Я знаю, что есть похожие потоки, которые затрагивают диапазоны, но они неадекватно учитывают разницу между "меньше-или-равно" и "меньше-чем".

Это было полезно?

Решение

То, что вам нужно, это дерево интервалов.Это не трудно найти реализация на C# и измените его, чтобы он соответствовал вашим потребностям.Я не вижу никаких проблем с "<=" или просто "<" отношения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top