如何验证ListOf(值范围)内的值范围以避免重叠 [英] How to Validate range of Values within ListOf (Range of Values) to avoid overlap

查看:49
本文介绍了如何验证ListOf(值范围)内的值范围以避免重叠的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我之前使用时间段库来验证日期范围。但是,如果我需要以相同的方式验证,那么值是什么?



例如

(有效范围)

5-10

20-50

51-100



(无效范围)

6-11

0-5

10-15

100-500

解决方案

非常简单,首先定义一个范围类:



  public   class 范围
{
< span class =code-keyword> public double HighValue { get ; set ; }
public double LowValue { get ; set ; }
public bool 包含{ get ; set ; }

public 范围( double highValue, double lowValue)
{
HighValue = highValue;
LowValue = lowValue;
}

public 范围( double highValue, double lowValue, bool 包括在内)
this (highValue,lowValue)
{
包含=包容性;
}

public bool InRange( double value
{
if (包含)
return value > = LowValue)&& ( value < = HighValue);
else
return value > LowValue&& value < HighValue;
}
}





然后在您的软件中定义列表中的范围:



列表< range> validRanges =  new  List< range>(); 
validRanges.Add( new 范围( 10 5 true ));
validRanges.Add( new 范围( 50 20 true ));
validRanges.Add( new 范围( 100 51 true ));

列表< range> invalidRanges = new List< range>();
invalidRanges.Add( new 范围( 11 6 true ));
invalidRanges.Add( new 范围( 5 0 false ));
invalidRanges.Add( new 范围( 15 10 false ));
invalidRanges.Add( new 范围( 500 100 false ));





然后你可以轻松检查价值是否有效:



  bool  isValid = validRanges.Any(r = >  r.InRange( value )); 
bool isInvalid = invalidRanges.Any(r = > r.InRange());





免责声明:未经完全测试,您的范围在有效和无效范围内重叠,因此它可能同时存在。


I have done this before to validate Date Range using Time Period Library., but what about values if i need to validate in same way

for e.g.
(Valid Range)
5-10
20-50
51-100

(Invalid Range)
6-11
0-5
10-15
100-500

解决方案

Pretty simple, first define a range class:

public class Range
{
    public double HighValue { get; set; }
    public double LowValue { get; set; }
    public bool Inclusive { get; set; }

    public Range(double highValue, double lowValue)
    {
        HighValue = highValue;
        LowValue = lowValue;
    }

    public Range(double highValue, double lowValue, bool inclusive)
        : this(highValue, lowValue)
    {
        Inclusive = inclusive;
    }

    public bool InRange(double value)
    {
        if (Inclusive)
            return (value >= LowValue) && (value <= HighValue);
        else
            return value > LowValue && value < HighValue;
    }
}



Then in your software define the ranges in a list:

List<range> validRanges = new List<range>();
validRanges.Add(new Range(10, 5, true));
validRanges.Add(new Range(50, 20, true));
validRanges.Add(new Range(100, 51, true));

List<range> invalidRanges = new List<range>();
invalidRanges.Add(new Range(11, 6, true));
invalidRanges.Add(new Range(5, 0, false));
invalidRanges.Add(new Range(15, 10, false));
invalidRanges.Add(new Range(500, 100, false));



Then you can easily check if a value is valid or not:

bool isValid = validRanges.Any(r => r.InRange(value));
bool isInvalid = invalidRanges.Any(r => r.InRange(value));



Disclaimer: Not fully tested, your ranges overlap in the valid and invalid ranges so its possible something could be both.


这篇关于如何验证ListOf(值范围)内的值范围以避免重叠的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆