Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用linq检查日期开始1和日期结束1是否与日期开始2和日期结束2重叠_C#_Linq - Fatal编程技术网

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。