C#Linq:选择接受null的数字列

时间:2012-12-06 14:30:44

标签: c# linq ado.net dataset

我有强类型数据集。现在我想用linq对数据表进行选择。

我的问题是这个表有数字列,允许空值。但是如果有数据行在这列中没有值,我不知道要做Select-命令。

这是我的疑问:

var query = from tab1 in localDataSet.simpleTable
            select new {
               line = tab1.IsLineNull ? null : tab1.line,
               wait = tab1.IswaitNull() ? null : tab1.wait
            }

如果tab1.IsLineNull()返回true,则无法设置line = null,因为数据类型“decimal”(以及所有其他数字值类型)不能为null。但我应该选择什么呢?我也不能选择0。

3 个答案:

答案 0 :(得分:0)

我假设您不知道如何创建Nullable<T>

var query = from tab1 in localDataSet.simpleTable
        select new {
           line = tab1.IsLineNull ?   new Nullable<decimal>(): tab1.line,
           wait = tab1.IswaitNull() ? new Nullable<decimal>(): tab1.wait
        }

答案 1 :(得分:0)

你必须在你的? :到tab1.line和tab1.wait的类型。

var query = from tab1 in localDataSet.simpleTable
            select new {
               line = tab1.IsLineNull ? (decimal?)null : tab1.line,
               wait = tab1.IswaitNull() ? (decimal?)null : tab1.wait
            }

答案 2 :(得分:0)

放一个

(int?) 

(decimal?)

null之前,它将null转换为可以为空的整数/小数

另外,如果你的方法:

IsLineNull
IswaitNull

只需控制字段是否为空,就可以减少以下问题:

var query = from tab1 in localDataSet.simpleTable
            select new {
               line = (int?)tab1.line,
               wait = (int?)tab1.wait
            }