Linq c#在时间跨度上使用
数据库中有两个字段,分别是“开始时间”和“结束时间” 我已将一条记录保存为 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实现这一点 这是我当前的尝试,没有产生正确的结果: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
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的答案。你的添加实际上阻止了它匹配某些它真正应该匹配的项目。