C# 排除范围内的日期时间

C# 排除范围内的日期时间,c#,.net,model-view-controller,C#,.net,Model View Controller,我想澄清一下我的日期时间范围逻辑的准确性,我想从可用日期中排除任何在不可用日期的日期范围内的日期 i、 e.如果2018年10月17日开始-2018年10月17日22:35 | |结束23:00是一个不可用的日期,则结果不应包含在这两个日期时间之间的开始和结束属性的任何对象 谢谢 var unavailable = new List<obj>(); var available = new List<obj>(); var result = available.Where

我想澄清一下我的日期时间范围逻辑的准确性,我想从可用日期中排除任何在不可用日期的日期范围内的日期

i、 e.如果2018年10月17日开始-2018年10月17日22:35 | |结束23:00是一个不可用的日期,则结果不应包含在这两个日期时间之间的开始和结束属性的任何对象

谢谢

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;}
}

你的重叠逻辑是有缺陷的。是否喜欢触摸边缘:

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;}
}

如果您能提供一个包含至少6个不同样本输入和每个样本输入的预期结果的示例,那就太棒了。这些示例输入中至少有一个应涵盖以下场景:可用条目的起始点位于不可用的起始点和结束点之间,可用的结束点位于不可用的结束点之后。我还建议将类名从obj更改为更有用的名称,可能是约会?。您可能希望>=和