Предполагая, что у вас есть класс Range, подобный этому:
public class Range
{
public int Min { get; set; }
public int Max { get; set; }
public Range(int min, int max)
{
this.Min = min;
this.Max = max;
}
public bool InRange(Range range)
{
//only check if range.Min because you said that the Range 3 30 should return positiv for 9 40
return range.Min >= this.Min && range.Min <= this.Max;
//use this if you want both Min and Max to be "InRange"
//return range.Min >= this.Min && range.Max <= this.Max;
}
}
Вы можете сделать это:
public static IEnumerable<Range> GetRanges(Range range, IEnumerable<Range> ranges)
{
return ranges.Where(x => range.InRange(x));
}
Чтобы получить Count
, просто вызовите метод GetRanges
и вызовите Count
на результат, например.
public static int GetCount(Range range, IEnumerable<Range> ranges)
{
return GetRanges(range, ranges).Count();
}
См. В действии:
https://dotnetfiddle.net/qEUBjK