我有一个名为Table1的表,如下所示,
Table1
------
Id FromUnit ToUnit
--
1, 1, 10,
2, 5,
3, 11 15
在这里,我需要检查上表中的重叠数字。
1)当我插入第一条记录时,我可以允许插入,因为我们没有任何记录,因为这是第一条记录。
2)对于介于1和10之间的第二个插入物5,所以我们不应该允许插入。
3)我们可以插入第三条记录,因为我们之前没有任何重叠数字。
我们如何在c#中进行此类检查?有人可以帮我这么做吗?
由于
与Pradeep
答案 0 :(得分:1)
使用BETWEEN
检查查询是否
select * from Table1 where 5 between FromUnit AND ToUNit
返回任何行。
你应该插入
2, 5, 5
而不是
2,5,NULL
使用上面的简单查询,否则你需要在查询中处理空值。
LINQ不支持between运算符,但您可以比较两端。
bool HasDuplicate =
(
from t in context.Table1s
where t.FromUnit <= 5
where t.ToUnit >= 5
select t
).Any();
但是为了确保我也将约束实现为数据库触发器。