确定范围重叠,包括小于和大于范围



我有一个整数范围列表。 当我创建一个新范围(x-y)时,如何检查列表(使用LINQ或其他方式)并确定新创建的范围是否满足要插入到列表中的条件:

  • 如果新创建的项目与任何现有项目重叠,则无法插入该项
  • 如果新创建的项目比任何项目都小 x 和小 y,则可以插入新创建的项目
  • 如果新创建的项目具有大于 x 和大于任何项目的 t,则可以插入它

    <----O---->
    <--------->
    ^ NOT OK
    <----O---->
    <--------->
    ^ NOT OK
    <----O---->
    <-->
    ^ OK
    <----O---->
    <-------------->
    ^ OK
    <----O---->
    <--->
    ^ OK
    <----O---->
    <--->
    ^ OK
    

如果唯一的规则是项目永不重叠(但可以是相同的限制),我让它工作

if (List.Any(listItem => listItem.X <= newItem.Y && listItem.Y >= newItem.X)) return false;

当我需要检查其他两个条件时,就会出现问题。 这可能吗?谢谢!

编辑:
解决方案类似于Apoorva Jhanwer的答案,该方法TrueForAll帮助了我。

if (newList.TrueForAll(listItem => 
newItem.X < listItem.X && newItem.Y > listItem.Y 
|| newItem.X > listItem.X && newItem.Y < listItem.Y 
|| newItem.X < listItem.X && newItem.Y < listItem.X 
|| newItem.X > listItem.Y && newItem.Y > listItem.Y )) return true;
if (list.TrueForAll(listItem => (newItem.X < listItem.X && newItem.Y > listItem.Y )||(newItem.X > listItem.X && newItem.Y < listItem.Y)))return true;

只需检查条件是否为真

最新更新