繁体   English   中英

如何在C#Linq中区分SQL Null整数

[英]How to differentiate between SQL Null ints in c# linq

在MVC中,我们可以在数据库上下文模型中声明可为null的int为

public int? SomeField { get; set; }

但是,如何检查Linq中SomeField的记录是否为Null。 例如,如果要获取值不为零的行列表,请使用以下Linq语句。

var k = db.TableSet.Where( u => u.Somefield != 0 )

是否有一个Linq等效项来包含/排除“零”和“空”两者?

编辑:我目前正在对此进行测试,但我确定它将是Null异常或Null字段返回零。

我个人更希望在数据层中过滤掉null值,以防止在代码中进行这种null检查。

但是,您可以使用:

var k = db.TableSet.Where(u => u.Somefield.HasValue && u.SomeField != 0)

//Or

var k = db.TableSet.Where(u => u.Somefield != null && u.SomeField != 0)

//Or

var k = db.TableSet.Where(u => u.Somefield.GetValueOrDefault() != 0)

//Or

var k = db.TableSet.Where(u => (u.Somefield ?? 0) != 0)

当然:

var k = db.TableSet.Where( u => u.SomeField != null && u.Somefield != 0 )

或对于可为空的类型:

var k = db.TableSet.Where( u => u.SomeField.HasValue && u.Somefield != 0 )

是; 只是比较为null

如果要同时排除两者,则需要and子句。

你可以这样做:

var k = db.TableSet.Where( u => u.Somefield.HasValue && u.Somefield.Value != 0 )

或这个:

var k = db.TableSet.Where( u => u.Somefield != null && u.Somefield != 0 )

或者可能是这样:

var k = db.TableSet.Where( u => (u.Somefield ?? 0) != 0 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM