在MVC中,我们可以在数据库上下文模型中声明可为空的int为
public int? SomeField { get; set; }
但是如何检查Linq中SomeField的记录是否为Null。例如,如果我想获得值不为零的行列表,请使用以下Linq语句。
var k = db.TableSet.Where( u => u.Somefield != 0 )
是否有Linq等效于包含/排除Zeros和Null?
编辑:我目前正在对此进行测试,但我确信它将是Null异常或Null字段返回为零。
答案 0 :(得分:3)
就我个人而言,我希望过滤掉数据层中的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)
答案 1 :(得分:2)
不确定
var k = db.TableSet.Where( u => u.SomeField != null && u.Somefield != 0 )
或可空类型:
var k = db.TableSet.Where( u => u.SomeField.HasValue && u.Somefield != 0 )
答案 2 :(得分:1)
是;只需与null
进行比较。
如果要排除这两者,则需要和子句。
答案 3 :(得分:1)
你可以这样做:
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 )