如何避免年龄范围重叠C#

时间:2013-12-03 04:17:16

标签: c# list range overlap

你能帮助我更好地验证或避免新的年龄段与现有的年龄范围重叠吗?

我有一个“年龄范围”实体列表,它具有minAge,maxAge属性,我想在我的列表中添加一个年龄范围类型的新对象,但它不能与现有年龄范围重叠。

List[0] (MinAge = 0, MaxAge = 2)
List[1] (MinAge = 3, MaxAge = 18)
List[2] (MinAge = 19, MaxAge = 54)

如果我想添加Min = 10和Max = 16 ......必须避免。我只需要添加系列中继续的值。

我试图通过列表中的每个索引来验证每个范围的最小值和最大值,但我想知道是否有其他方法可以使用linq或类似的方法来执行此操作

示例:

foreach(Age age in list)
{
     if(age.min >= min && max <= age.max)
     {
          return false;
     }
}

2 个答案:

答案 0 :(得分:2)

.Any(i => i.max >= min && i.min <= max);

如果存在重叠,则会返回True

答案 1 :(得分:1)

return !list.Any(x => x.min <= min && x.max >= min || x.min <= max && x.max >= max);