C# 无法确定条件表达式的类型
我正在尝试将数据集中的值保存到列表中。这是我的代码C# 无法确定条件表达式的类型,c#,int,C#,Int,我正在尝试将数据集中的值保存到列表中。这是我的代码 GetPostWRTPager_Class = ds.Tables[0] .AsEnumerable() .Select(r => new GetPostWRTPager() { IsApproved = r["IsApproved"] == DBNull.Value ? DBNull.Value : Convert.ToInt32(r["IsApproved"]), Appro
GetPostWRTPager_Class = ds.Tables[0]
.AsEnumerable()
.Select(r => new GetPostWRTPager() {
IsApproved = r["IsApproved"] == DBNull.Value
? DBNull.Value
: Convert.ToInt32(r["IsApproved"]),
ApprovedBy = r["ApprovedBy"],
ApprovedOn = Convert.ToDateTime(r["ApprovedOn"]), })
.ToList();
它总是给我下面定义的错误
无法确定条件表达式的类型,因为存在
“System.DBNull”和“int”之间没有隐式转换
我的代码有什么问题是的,
DBNull
和int
之间没有隐式转换。但是您可以使用支持空类型的字段
扩展方法(比使用System.Object
更好):
如果您想要一个int
值,如果它是NULL
,则为0:
IsApproved = r.Field<int?>("IsApproved").GetValueOrDefault(),
是int值吗?或位值?IsApprove是int值1)approve 2)approve 3)Pending是您的
GetPostWrtPage。IsApproved
nullable?@GeomanYabes是
IsApproved = r.IsNull("IsApproved") ? DBNull.Value : (object)r.Field<int>("IsApproved"),
IsApproved = r.Field<int?>("IsApproved").GetValueOrDefault(),
IsApproved = r.Field<int?>("IsApproved") == 1,