【问题标题】:How can I check a value is in a range in IList如何检查值是否在 IList 的范围内
【发布时间】:2021-01-21 20:21:58
【问题描述】:

我有以下代码返回IList<>

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, 

【问题讨论】:

  • 那么您是想说productCodesIList<Model>,而您的Model 具有ProductStartCodeProductEndCode 属性吗?
  • 当您说“如果我进入”时,您的意思是您是否提供了开始代码和结束代码,或者可能的代码列表,或者...???
  • @NetMage 是的,这就是我想说的productCodes 返回是IList<Model> 当我输入ProductStartCodeProductEndCode
  • 那么100001,100002,100003 是什么?

标签: c# asp.net-mvc list linq


【解决方案1】:

给定一个范围列表和一个检查重叠的可能范围,看看可能范围的开始或结束是否在列表中的任何范围之间:

var isOverlapping = productCodes.Any(p => p.ProductStartCode <= possibleStartCode && possibleStartCode <= p.ProductEndCode) ||
                    productCodes.Any(p => p.ProductStartCode <= possibleEndCode && possibleEndCode <= p.ProductEndCode);

【讨论】:

  • 感谢 NetMage,我正在尝试。
猜你喜欢
  • 1970-01-01
  • 2011-06-29
  • 1970-01-01
  • 2023-04-03
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多