【发布时间】:2020-04-10 17:33:28
【问题描述】:
我有一个如下所示的对象列表:
public class Products
{
public int ID { get; set; }
public decimal MinimumPrice { get; set; }
public decimal MaximumPrice { get; set; }
}
我想对此列表执行两种类型的验证:
a) 值不应重叠(无效输入示例
对象 1:MinimumPrice:1 - MaximumPrice:5
Object2:MinimumPrice:3 - MaximumPrice:6
如果第二个对象是 MinimumPrice: 6 - MaximumPrice: 7 则有效
b) 第二个验证应该是对象之间不会有间隙:
使用上面的示例,如果 Object2 为 MinimumPrice: 8 - MaximumPrice: 9 ,则无效,因为 6 和 7 之间会有差距。
执行这些验证的最佳方法是什么?
【问题讨论】:
-
我不明白你的样本...
-
按最小值和最大值排序,然后将每个对象与下一个对象进行比较,看看它们是否重叠或有间隙。
-
只需要一个比较: Object1.MaximumPrice == Object2.MinimumPrice 您使用十进制,其中可能存在非常小的重叠,如 1.0E-12。这是重叠吗?
-
@Knewit 要应用这些验证,对象列表必须固定顺序并且没有排序?
-
它看起来像是一个链表,MaximumPrice 与另一个 MinimumPrice+1 链接,直到列表末尾。
标签: c# linq data-structures