如何区分c#linq中的SQL Null ints

时间:2013-08-27 21:21:58

标签: c# asp.net-mvc linq

在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字段返回为零。

4 个答案:

答案 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 )