如何检查重叠数字?

时间:2011-11-09 05:51:56

标签: c# linq

我有一个名为Table1的表,如下所示,

Table1
------

Id         FromUnit           ToUnit
--
1,          1,                  10,

2,          5,

3,          11                  15

在这里,我需要检查上表中的重叠数字。

1)当我插入第一条记录时,我可以允许插入,因为我们没有任何记录,因为这是第一条记录。

2)对于介于1和10之间的第二个插入物5,所以我们不应该允许插入。

3)我们可以插入第三条记录,因为我们之前没有任何重叠数字。

我们如何在c#中进行此类检查?有人可以帮我这么做吗?

由于

与Pradeep

1 个答案:

答案 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();

但是为了确保我也将约束实现为数据库触发器。