Linq查询返回列值空句柄

时间:2019-09-26 14:06:28

标签: c# linq casting

在数据表返回一列列表中,在这种情况下表返回空值,我要处理空值

DataTable PreviousQuarter = GroupFive.Tables["PreviousQuarter_108_49_100_51"];
LastQuarter.Merge(PreviousQuarter);

var AHCT = (from ah in PreviousQuarter.AsEnumerable()
            where  ah.Field<int>("ParameterID") == 10 
                || ah.Field<int>("ParameterID") == 11
                || ah.Field<int>("ParameterID") == 12 
                || ah.Field<int>("ParameterID") == 13          
            select ah.Field<int>("Tot_Tkts_Closed")).ToList();

if (AHCT == null)
{
    Response = "";
}

它将为空,我得到错误指定的转换无效。 如何处理此错误。

2 个答案:

答案 0 :(得分:1)

您正在选择表中不可用的值,并且在输入结果之前,将其强制转换为int。 这就是为什么它会引发错误。 最好先选择然后将其转换为int。

答案 1 :(得分:0)

我认为@madreflection在评论中给了您答案。

由于出现此错误:

  

指定的演员表无效

我的猜测是您在Tot_Tkts_Closed列中有一个空值。在这种情况下,将其强制转换为可为null的int int?。更新此行:

select ah.Field<int?>("Tot_Tkts_Closed")

另一种可能性是ParameterID为null,在这种情况下,应该通过类似的更改来解决它:ah.Field<int?>("ParameterID")


与其检查列表是否为空,还可以检查列表是否为空。在这种情况下,请使用Count属性:

if (AHCT.Count == 0)
{
    Response = "";
}