问题描述
var productCodes = await ProductsService.GetAllProductsAsync();
我的模型:
public int ProductStartCode { get; set; }
public int ProducEndCode { get; set; }
创建新的产品代码范围时,我想检查新代码是否与现有产品代码重叠
我的产品代码如下所示:
ProductStartCode ProductEndCode
100001 100003
100004 100008
100009 100011
我需要检查我想要完成的事情,
For example if I enter: 100001,100002,100003 are overlapping since they in between 100001 & 100002 range,100004,100005,100006,100007,100008 are also overlapping since they in between 100004 & 100008 range,
解决方法
给定一个范围列表,以及一个检查重叠的可能范围,看看可能范围的开始或结束是否在列表中的任何范围之间:
var isOverlapping = productCodes.Any(p => p.ProductStartCode <= possibleStartCode && possibleStartCode <= p.ProductEndCode) ||
productCodes.Any(p => p.ProductStartCode <= possibleEndCode && possibleEndCode <= p.ProductEndCode);