[英]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.