C# Linq查询返回列值空句柄
在datatable return one column列表中,在这个场景中,表返回null值,我想处理null值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 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的intint?
。更新此行:
select ah.Field<int?>("Tot_Tkts_Closed")
ToList
将永远不会返回null
;它将返回一个实例或抛出一个异常,因此测试AHCT==null
是毫无意义的。至于无效的强制转换,这发生在其中一个Field()
调用中。请尝试Field()
。
if (AHCT.Count == 0)
{
Response = "";
}