C# 如何使用linq检查日期开始1和日期结束1是否与日期开始2和日期结束2重叠
我有一个包含以下列的数据库:C# 如何使用linq检查日期开始1和日期结束1是否与日期开始2和日期结束2重叠,c#,linq,C#,Linq,我有一个包含以下列的数据库: event_start, event_end. 如何检查start和end是否与数据库中存储的事件开始和事件结束重叠。以下是我现在使用的代码: public static bool IsAvailable(DateTime, start, DateTime, end) { var query = from evnt in dbContext.events select evnt; foreach (var q in
event_start, event_end.
如何检查start
和end
是否与数据库中存储的事件开始和事件结束重叠。以下是我现在使用的代码:
public static bool IsAvailable(DateTime, start, DateTime, end)
{
var query = from evnt in dbContext.events
select evnt;
foreach (var q in query)
{
if (start < q.event_end || end > q.event_start)
{
return false;
}
}
return true;
}
publicstaticbool可用(DateTime、start、DateTime、end)
{
var query=来自dbContext.events中的evnt
选择evnt;
foreach(查询中的var q)
{
如果(开始q.event_start)
{
返回false;
}
}
返回true;
}
仅开始日期在事件结束日期之前是不够的-结束日期也必须在事件开始日期之后。将|
替换为&&
此外,您还可以通过调用Any()
,来替换循环:
返回!dbContext.events.Any(q=>startq.event\u start);
仅开始日期在事件结束日期之前是不够的-结束日期也必须在事件开始日期之后。将|
替换为&&
此外,您还可以通过调用Any()
,来替换循环:
返回!dbContext.events.Any(q=>startq.event\u start);
在查询中添加一个Where
var data = dbContext.Events
.Where(q => !(start < q.event_end || end > q.event_start))
.ToList();
var data=dbContext.Events
.其中(q=>!(开始q.event_start))
.ToList();
在查询中添加一个Where
var data = dbContext.Events
.Where(q => !(start < q.event_end || end > q.event_start))
.ToList();
var data=dbContext.Events
.其中(q=>!(开始q.event_start))
.ToList();
您可以使用此查询检查任何记录是否与特定日期范围冲突
var query = (from evnt in dbContext.events
where evnt.event_end >= start
|| evnt.event_start <= end
select evnt ).FirstOrDefault();
if(query != null){
//it is overlap
}
var query=(来自dbContext.events中的evnt
其中evnt.event\u end>=开始
||evnt.event_start=end
到您可以使用此查询检查任何记录是否与特定日期范围冲突
var query = (from evnt in dbContext.events
where evnt.event_end >= start
|| evnt.event_start <= end
select evnt ).FirstOrDefault();
if(query != null){
//it is overlap
}
var query=(来自dbContext.events中的evnt
其中evnt.event\u end>=开始
||evnt.event_start=end
to我尝试过这个返回查询==null。但是它总是返回false。我尝试过这个返回查询==null。但是它总是返回false。