如何验证ListOf(值范围)内的值范围以避免重叠 [英] How to Validate range of Values within ListOf (Range of Values) to avoid overlap
本文介绍了如何验证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屋!
查看全文