我有一个整数范围列表。
当我创建一个新范围(x-y)时,如何检查列表(使用LINQ
或其他方式)并确定新创建的范围是否满足要插入列表的条件:
如果新项目的x大于任何项目,则可以插入新项目
<----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;
答案 0 :(得分:1)
if (list.TrueForAll(listItem => (newItem.X < listItem.X && newItem.Y > listItem.Y )||(newItem.X > listItem.X && newItem.Y < listItem.Y)))return true;
检查条件是否正确