Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq中长数据类型的Null检查_C#_Linq - Fatal编程技术网

C# Linq中长数据类型的Null检查

C# Linq中长数据类型的Null检查,c#,linq,C#,Linq,我正在处理一个问题,首先需要查询数据库,以确定输入记录是否会导致“重叠”日期跨度。SQL中的任务相当简单,但我似乎无法让它在Linq中工作。以下是相关的业务规则: 如果Id1==Id1且日期跨度重叠,则将冲突的记录带回给我 如果Id2==Id2且日期跨度重叠,则将冲突的记录返回给我 如果Id1==null和Id2==null且日期跨度重叠,则将冲突的记录带回 我的linq查询如下: resultingOverlaps = (from overlapSpans in entities.ENTITI

我正在处理一个问题,首先需要查询数据库,以确定输入记录是否会导致“重叠”日期跨度。SQL中的任务相当简单,但我似乎无法让它在Linq中工作。以下是相关的业务规则:

如果Id1==Id1且日期跨度重叠,则将冲突的记录带回给我 如果Id2==Id2且日期跨度重叠,则将冲突的记录返回给我 如果Id1==null和Id2==null且日期跨度重叠,则将冲突的记录带回

我的linq查询如下:

resultingOverlaps = (from overlapSpans in entities.ENTITIES
             where overlapSpans.CNTRCT_TYP_ID == contractId
             where (overlapSpans.ID1 == Id1 || overlapSpans.Id2 == Id2 ||
                   (overlapSpans.ID1 == null && overlapSpans.Id2 == null))
             where (
             (overlapSpans.EFF_DT < effDate && overlapSpans.END_DT >= effDate)
              || (overlapSpans.EFF_DT > effDate && overlapSpans.EFF_DT <= endDate)
              || (overlapSpans.EFF_DT == effDate)
             )
             select overlapSpans).ToList();
resultingOverlaps=(来自entities.entities中的重叠跨度
其中overlappSpans.CNTRCT_TYP_ID==constructed
其中(overlapspands.ID1==ID1 | | overlapSpans.Id2==Id2||
(OverlappSpans.ID1==null&&OverlappSpans.Id2==null))
在哪里(
(overlapSpans.EFF_DT=effDate)

||(OverlappSpans.EFF_DT>effDate&&OverlappSpans.EFF_DT如果entity framework将这些属性创建为“long”,这意味着该列必须在数据库中指定为“NOT NULL”

无需检查null,因为OverlappSpans.ID1和OverlappSpans.Id2永远不会为null

如果它们可以为null,则EF足够聪明,可以将它们的数据类型设置为“long?”(Nullable


另外,键入为long的变量首先不能为null。它们的默认值为“0”(使用默认值验证(Int64)),因此如果它们为“null”,则等于“0”.

你有没有研究过可空类型的HasValue?是的,我的帖子说我已经尝试过了。我的错误,我错过了那一点。你的代码是编译并运行的,还是甚至没有构建的?它编译并运行得很好,它执行这个linq查询,但是在Id1==null和Id2==null的情况下,它不会返回任何记录(它应该返回的情况很多),因此我在插入时遇到了唯一性约束错误。属性ID1和ID2有什么类型?