【发布时间】:2020-03-23 02:02:11
【问题描述】:
我需要从 2 个表中选择记录,并使用左连接。那部分很好。但是,在where子句中,我需要选择where t2.fromDate > 20190101 OR t2.fromDate is null。
问题在于,在 c# 中,t2.fromDate 是 int,而不是可为空的 int。我应该如何将t2.fromDate 与 null 进行比较?我试过t2.fromDate == 0,但这不起作用,因为在 SQL 中该值为 null,但在 C# 中则期望该值为 int。
int FromDate = 20190101;
var data = (from hi in DbContext.t1
from fp in DbContext.t2.Where(x => x.DimHierarchyItemKey == hi.Key).DefaultIfEmpty()
where fp.fromDate >= FromDate || ???
【问题讨论】:
-
您不能将您的实体更新为
int?吗? -
很遗憾没有。我无法控制 db 架构,并且 C# pocos 是动态创建的,因此我所做的任何更改都必须每次都进行 post regen。
-
如果
t2.fromDate是int,在C# 中它不可能是null,所以你可以总是假设它不为空。如果试图实例化一个空值,你会得到一个异常。
标签: c# linq-to-sql