Linq c#在时间跨度上使用

Linq c#在时间跨度上使用,c#,.net,linq,C#,.net,Linq,数据库中有两个字段,分别是“开始时间”和“结束时间” 我已将一条记录保存为 StartTime EndTime 05:00:00.0000000 06:00:00.0000000 开始时间结束时间 05:00:00.0000000 06:00:00.0000000 如果在同一时间或在05:00:00.0000000到06:00:00.0000000之间插入另一条记录,我想显示一条错误消息 这意味着无论开始和结束时间是什么,它都不应该发生在05到06之间 04 to

数据库中有两个字段,分别是“开始时间”和“结束时间”

我已将一条记录保存为

StartTime EndTime 05:00:00.0000000 06:00:00.0000000 开始时间结束时间 05:00:00.0000000 06:00:00.0000000 如果在同一时间或在05:00:00.0000000到06:00:00.0000000之间插入另一条记录,我想显示一条错误消息

这意味着无论开始和结束时间是什么,它都不应该发生在05到06之间

04 to 06 - Show error 04:30 to 06 - Show error 05:00 to 07 - Show error 04至06-显示错误 04:30至06-显示错误 05:00至07-显示错误 我如何使用linq实现这一点

这是我当前的尝试,没有产生正确的结果:

string _timepicker_start = collection["timepicker_start"];
string _timepicker_end = collection["timepicker_end"];
TimeSpan _end = new TimeSpan(Convert.ToInt16(_timepicker_end.Split(':')[0])
    ,  Convert.ToInt16(_timepicker_end.Split(':')[1]), 00);
TimeSpan _start = new TimeSpan(Convert.ToInt16(_timepicker_start.Split(':')[0])
    , Convert.ToInt16(_timepicker_start.Split(':')[1]), 00);

var _schedule = _db.Classes
                 .Where(c => c.StartTime <= _start && c.EndTime >= _end)
                .FirstOrDefault(); 

if (_schedule != null)
{
    // Show message already have record.. 
}
string\u timepicker\u start=collection[“timepicker\u start”];
字符串_timepicker_end=集合[“timepicker_end”];
TimeSpan\u end=新的TimeSpan(转换.ToInt16(\u timepicker\u end.Split(':')[0])
,Convert.ToInt16(_timepicker_end.Split(“:”)[1]),00);
TimeSpan\u start=新的TimeSpan(转换为.ToInt16(\u timepicker\u start.Split(':')[0])
,Convert.ToInt16(_timepicker_start.Split(“:”)[1]),00);
var\u schedule=\u db.Classes
.Where(c=>c.StartTime=\u end)
.FirstOrDefault();
如果(_schedule!=null)
{
//显示已存在记录的邮件。。
}

它不能正常工作,请建议我。

您想要
c=>c.EndTime>\u开始和&c.StartTime<\u结束
在您的
中的位置

(如果您不希望项目能够在两端“接触”,请添加相等。)


这假设您正在验证
Where
中所需的
c=>c.EndTime>\u start和&c.StartTime<\u end

(如果您不希望项目能够在两端“接触”,请添加相等。)


这假设由于堆栈溢出,您正在验证启动时间:

我的解决方案如下:

            var _schedule = _db.Classes
             .Where(c => (c.StartTime >= _start || c.StartTime <_end)&& c.EndTime > _end)
            .FirstOrDefault(); 
var\u schedule=\u db.Classes
.其中(c=>(c.StartTime>=|u开始| c.StartTime|u结束)
.FirstOrDefault();

感谢您的快速响应和帮助!!!

感谢堆栈溢出:

我的解决方案如下:

            var _schedule = _db.Classes
             .Where(c => (c.StartTime >= _start || c.StartTime <_end)&& c.EndTime > _end)
            .FirstOrDefault(); 
var\u schedule=\u db.Classes
.其中(c=>(c.StartTime>=|u开始| c.StartTime|u结束)
.FirstOrDefault();

感谢您的快速响应和帮助!!!

作为旁注…如果您从未使用结果,您可以使用
.Any()
而不是
.FirstOrDefault()
\u db.Classes.Any(c=>c.EndTime>=\u start&&c.StartTime@Servy感谢您帮助澄清。我在回答时没有完全理解输出应该是什么,并删除了我的帖子。作为补充说明…如果您从未使用结果,您可以使用
.Any()
而不是
.FirstOrDefault()
\u db.Classes.Any(c=>c.EndTime>=\u start&&c.StartTime@Servy感谢您帮助澄清。我在回答时没有完全理解输出应该是什么,并删除了我的帖子。这不对。你应该使用罗琳的答案。你的添加实际上阻止了它匹配某些它真正应该匹配的项目。这不对。你应该se Rawling的答案。你的添加实际上阻止了它匹配某些它真正应该匹配的项目。