【发布时间】:2019-01-13 11:06:09
【问题描述】:
我有一个包含最小值和最大值列表的输入类型。我需要做的是验证列表以确保最小值/最大值之间没有重叠。 DTO 与此类似
public class FeeDTO
{
/// <summary>
/// Gets or sets the fees.
/// </summary>
/// <value>
/// The fees.
/// </value>
public List<IndividualFee> Fees { get; set; }
}
public class IndividualFee
{
/// <summary>
/// Gets or sets the minimum value.
/// </summary>
/// <value>
/// The minimum value.
/// </value>
public Int32 MinValue { get; set; }
/// <summary>
/// Gets or sets the maximum value.
/// </summary>
/// <value>
/// The maximum value.
/// </value>
public Int32 MaxValue { get; set; }
}
例如,这个输入就可以了,因为所有范围都是互斥的:
- 范围 1:最小值 = 0 最大值 = 100
- 范围 2:最小值 = 101 最大值 = 200
- 范围 3:最小值 = 201 最大值 = 300
但是,在以下示例中,范围 3 的最小值落在范围 2 内
- 范围 1:最小值 = 0 最大值 = 100
- 范围 2:最小值 = 101 最大值 = 200
- 范围 3:最小值 = 199 最大值 = 300
我的问题是,检测值之间的这种重叠的最佳方法是什么?
【问题讨论】:
-
效率不高,但首先对其进行排序:
fees.OrderBy(x => x.Max)然后为每个检查下一个Min是否大于此Max。 -
你有没有尝试过什么?为什么我们应该做你应该做的事情:思考和尝试?
-
定义最好,最容易写?最容易使用?在大多数情况下运行速度最快?