Iva*_*ono 2 c# fluentvalidation
有这样一个类:
public class MyRange
{
public int From {get; set;}
public int To {get; set;}
public MyRange(int from, int to)
{
From = from;
To = to;
}
}
Run Code Online (Sandbox Code Playgroud)
并具有List<MyRange>以下值:
var list = new List<MyRange>();
list.Add(new MyRange(1, 1000));
list.Add(new MyRange(1001, 2000));
list.Add(new MyRange(50, 1500));
list.Add(new MyRange(1900, 2900));
Run Code Online (Sandbox Code Playgroud)
是否可以有一个FluentValidation规则来检查上述范围不重叠?(范围之间的差距是有效的)
您可以通过对属性的范围进行排序From,然后检查To前一个元素的属性是否低于From当前元素的属性来完成此操作:
var ordered = list.OrderBy(r => r.From).ToList();
var isValid = ordered
.Zip(ordered.Skip(1), (a, b) => new {Prior = a, Current = b})
.All(p => p.Prior.To <= p.Current.From);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |