【发布时间】:2012-08-29 18:51:32
【问题描述】:
给定表格中特定记录的日期范围,例如特定字段“名称”
如果有人试图在之前的日期范围内插入该名称,则不应允许。
我在这里试过一些代码看看这个...
if (dataContext.TableAs.Where(
x => x.EndDate > StartDate &&
x.Name == Name).Count() == 0)
{
//insert record
}
但并非总是成功。
谁能建议我在这里错过了什么?
我已经在 SQL 中尝试了以下查询,我如何在 LINQ 中将其用于上述代码
SELECT COUNT(*) FROM TableA WHERE ('2012-04-02' between StartDate and EndDate or '2012-08-28'
between StartDate and EndDate or StartDate between '2012-04-02' and '2012-08-28' or EndDatebetween '2012-04-02' and '2012-08-28' ) and Name='Test'
【问题讨论】:
-
查看我对您问题第二部分的编辑
-
你能澄清一下吗?如果存在 2 条记录
Begin=2012-01-01,End=2012-01-31和Begin=2012-03-01,End=2012-03-05是否允许添加Begin=2012-02-01,End=2012-02-05? -
是允许的,如果您考虑 Begin=2012-01-05,End=2012-02-05 则不允许
-
在这种情况下,您可以将 between 子句简化为
'2012-04-02' <= EndDate and '2012-08-28' >=StartDate。然后查看我对适当 linq 的回答