C# 如何验证数据库中未占用的日期

C# 如何验证数据库中未占用的日期,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我要检查的日期范围是否在我提供的日期内。 例如,我有一个带有“开始日期”和“结束日期”的表 我只想检查给定的日期是否不在数据库中 数据库中的数据 FromDate and TODate 1 Aug 2012 ------ 4 Aug 2012 5 Aug 2012 ------ 11 Aug 2012 12 Aug 2012 ------ 15 Aug 2012 示例开始日期和结束日期 FromDate and ToDate 1 Aug 2012 -

我要检查的日期范围是否在我提供的日期内。 例如,我有一个带有“
开始日期”和“
结束日期”的表

我只想检查给定的日期是否不在数据库中

数据库中的数据

FromDate  and TODate 

1 Aug 2012  ------  4 Aug 2012

5 Aug 2012 ------   11 Aug 2012

12 Aug 2012 ------  15 Aug 2012
示例开始日期和结束日期

FromDate      and      ToDate 

1 Aug 2012 ------   2 Aug 2012  **Should Return INVALID**

5 Aug 2012  ------  11 Aug 2012 **Should Return INVALID**

10 Aug 2012 ------   10 Aug 2012  **Should Return VALID**

15 Aug 2012  ------ 15 Aug 2012 **Should Return INVALID**
有人能给出一些想法吗

我正在使用
LINQ
SQL
从数据库进行查询


编辑:只想确保我的“开始”和“开始”日期与数据库中的日期不冲突。如果间隔的起点和终点正确,请不要检查它。我们检查现有区间是否与相关区间相交:

void Main()
{

var ExistIntervals = new HashSet<Interval>();
//1 Aug 2012 4 Aug 2012
//5 Aug 2012 11 Aug 2012
//12 Aug 2012 15 Aug 2012
ExistIntervals.Add(new Interval { From = new DateTime(2012, 8, 1), 
                                  To = new DateTime(2012, 8, 4) });
ExistIntervals.Add(new Interval { From = new DateTime(2012, 8, 5), 
                                  To = new DateTime(2012, 8, 11) });
ExistIntervals.Add(new Interval { From = new DateTime(2012, 8, 12), 
                                  To = new DateTime(2012, 8, 15) });

var QueryIntervals = new HashSet<Interval>();
//1 Aug 2012 2 Aug 2012 INVALID
//5 Aug 2012 11 Aug 2012 INVALID
//10 Aug 2012 10 Aug 2012 VALID
//15 Aug 2012 15 Aug 2012 INVALID
QueryIntervals.Add(new Interval { From = new DateTime(2012, 8, 1), 
                                  To = new DateTime(2012, 8, 2) });
QueryIntervals.Add(new Interval { From = new DateTime(2012, 8, 5), 
                                  To = new DateTime(2012, 8, 11) });
QueryIntervals.Add(new Interval { From = new DateTime(2012, 8, 10), 
                                  To = new DateTime(2012, 8, 10) });
QueryIntervals.Add(new Interval { From = new DateTime(2012, 8, 15), 
                                  To = new DateTime(2012, 8, 15) });

var result = QueryIntervals.Where( x=> !ExistIntervals.Any(
                                         y=>(y.From <= x.From && x.From <= y.To)
                                         || (y.From <= x.To && x.To<=y.To)
                                                          )
                                 );
result.Dump();                                                         

}

public class Interval
{
  public DateTime From { get; set; }
  public DateTime To { get; set; }
}
然后,试验可如下所示:

var isValid = !db.CompaitnDates.Any(
                                    y=>(y.From <= checkFrom && checkFrom <= y.To)
                                    || (y.From <= checkTo && checkTo<=y.To)
                                   );
var isValid=!db.compaitnades.Any(

y=>(是的,我不明白它什么时候有效,什么时候无效。请给我们分享一些代码来帮助你。你可以重新表述你的问题或提供一些额外的信息/代码吗?我不明白你在问什么。看看更新的。8月10日是有效的,因为这不属于数据库中的任何日期。我没听清楚,我有日期在数据库中。我只是想用LINQTOSQL从数据库中检查这一点。这一行是你的朋友:var result=QueryIntervals.Where(x=>!ExistIntervals.Any(y=>)(y.from Table name是compaitnandestgreat!!完成。感谢你的帮助。上帝保佑你
var isValid = !db.CompaitnDates.Any(
                                    y=>(y.From <= checkFrom && checkFrom <= y.To)
                                    || (y.From <= checkTo && checkTo<=y.To)
                                   );