Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法确定条件表达式的类型_C#_Int - Fatal编程技术网

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,