0

我在数据库中有两个字段名为“StartTime”和“EndTime”

我已将记录保存为

开始时间结束时间
05:00:00.0000000 06:00:00.0000000

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

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

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.. 
}

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

4

2 回答 2

3

你想c => c.EndTime > _start && c.StartTime < _end在你的Where.

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

这假设您正在验证StartTime<=EndTime的所有内容。

于 2012-10-31T16:06:34.757 回答
0

感谢堆栈溢出:

我的解决方案如下:

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

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

于 2012-10-31T16:53:55.693 回答