C# Linq查询返回列值空句柄

C# Linq查询返回列值空句柄,c#,linq,casting,C#,Linq,Casting,在datatable return one column列表中,在这个场景中,表返回null值,我想处理null值 DataTable PreviousQuarter = GroupFive.Tables["PreviousQuarter_108_49_100_51"]; LastQuarter.Merge(PreviousQuarter); var AHCT = (from ah in PreviousQuarter.AsEnumerable() where ah.

在datatable return one column列表中,在这个场景中,表返回null值,我想处理null值

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 = "";
}
DataTable PreviousQuarter=GroupFive.Tables[“PreviousQuarter_108_49_100_51”];
上一季度。合并(上一季度);
var AHCT=(来自上一季度的ah.AsEnumerable()
其中ah.字段(“参数化”)==10
||ah.字段(“参数化”)==11
||ah.字段(“参数化”)==12
||ah.字段(“参数化”)==13
选择ah.Field(“Tot_Tkts_Closed”).ToList();
如果(AHCT==null)
{
答复=”;
}
它将为空,我得到的错误是指定的强制转换无效。
如何处理此错误。

您正在选择一个表中不可用的值,在获得结果之前,请将其转换为int。 这就是它抛出错误的原因。
最好先选择,然后将其转换为int。

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

由于您遇到此错误:

指定的强制转换无效

我猜在
Tot\u Tkts\u Closed
列中有一个空值。在这种情况下,将强制转换为可为null的int
int?
。更新此行:

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

ToList
将永远不会返回
null
;它将返回一个实例或抛出一个异常,因此测试
AHCT==null
是毫无意义的。至于无效的强制转换,这发生在其中一个
Field()
调用中。请尝试
Field()
if (AHCT.Count == 0)
{
    Response = "";
}