Provides a helper method for determining weather two value ranges intersect.
LINQPad v4 C# sample RangeIntersection.linq (5.18 kb)
/// <summary>
/// Check for the intersection between two sets of ranges.
/// </summary>
/// <param name="range1Start">The start of the first range.</param>
/// <param name="range1End">The end of the first reage.</param>
/// <param name="range2Start">The start of the second range.</param>
/// <param name="range2End">The end of the second range.</param>
/// <returns>true if the two ranges intersect with each other; otherwise false.</returns>
public static bool RangeIntersection(int range1Start, int range1End, int range2Start, int range2End)
{
var r1Start = range1Start;
var r1End = range1End;
var r2Start = range2Start;
var r2End = range2End;
if (range1Start > range1End)
{
r1Start = range1End;
r1End = range1Start;
}
if (range2Start > range2End)
{
r2Start = range2End;
r2End = range2Start;
}
var greatestStart = r1Start > r2Start ? r1Start : r2Start;
var smallestEnd = r1End < r2End ? r1End : r2End;
return !(greatestStart > smallestEnd);
}