我有强类型数据集。现在我想用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。
答案 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
}