我想澄清一下日期时间范围逻辑的准确性,我想排除任何存在于不可用日期范围内的日期。
即如果开始17/10/2018-22:35 ||结束日期2018年10月17日23:00是不可用的日期,则结果不应包含在这两个DateTime之间位于其Start和End属性的对象。
谢谢
var unavailable = new List<obj>();
var available = new List<obj>();
var result = available.Where(x => !unavailable.Any(y => y.Start > x.Start && y.End <
x.End);
public class obj
{
public DateTime Start {get; set;}
public DateTime End {get; set;}
}
答案 0 :(得分:0)
您的重叠逻辑有缺陷。做到(触碰边缘独占):
var result = available.Where(x =>
!unavailable.Any(y => y.Start < x.End && y.End > x.Start));
public class DateRange // obj is awkward naming
{
public DateTime Start {get; set;}
public DateTime End {get; set;}
}