C# 无法强制转换类型为';System.Collections.ArrayList';输入';System.IConvertible';
我必须根据一个特定列的空值获取行数。我使用了下面给出的代码。此处cad assign列包含值,也包含空值。我必须计算cad_分配的空值数量,并在此基础上显示值C# 无法强制转换类型为';System.Collections.ArrayList';输入';System.IConvertible';,c#,asp.net,C#,Asp.net,我必须根据一个特定列的空值获取行数。我使用了下面给出的代码。此处cad assign列包含值,也包含空值。我必须计算cad_分配的空值数量,并在此基础上显示值 protected void ddlCircle_SelectedIndexChanged(object sender, EventArgs e) { ArrayList list = new ArrayList(); ShadingAnalysisDataSetTableAdapters.tbl_CadEngineer
protected void ddlCircle_SelectedIndexChanged(object sender, EventArgs e)
{
ArrayList list = new ArrayList();
ShadingAnalysisDataSetTableAdapters.tbl_CadEngineersTeamTableAdapter cd;
cd = new ShadingAnalysisDataSetTableAdapters.tbl_CadEngineersTeamTableAdapter();
DataTable dt = new DataTable();
dt = cd.GetAvailableData(ddlCircle.SelectedValue);// dt get values where cad_assign is null
int x;
foreach (DataRow dtrow in dt.Rows)
{
list.Add(dtrow); // here we getting dt count.
}
x = Convert.ToInt32(list); // error popup here
}
SQL查询:
SELECT state1, district, site_id, site_name
FROM tbl_site_details
WHERE (state1 = @state1) AND (cad_assign IS NULL)
ArrayList
实现ICollection
,因此将具有.Count
属性以及Linq扩展方法
如果你想知道总数
x = list.Count;
对于空计数
x = list.Count(a => a == null);
当前的问题是,您试图将
ArrayList
转换为Int32
(convert.ToInt32
不计算列表,它试图将给定对象转换为整数)
如果您试图对列表进行计数,可以使用ArrayList.count
:
x = list.Count;
您可以更轻松地执行此操作,而不必使用列表,直接对行进行计数:
x = dt.Rows.Count;
或者最好更改SQL以直接返回计数:
SELECT Count(1)
FROM tbl_site_details
WHERE (state1 = @state1) AND (cad_assign IS NULL)
我不确定如何使用ShadingAnalysisDataSetTableAdapters获取标量结果,但至少应该能够做到:
var x = (int)dt.Rows[0][0];
您正在将整数值列表转换为int,这是不可能的
x = list.Count;
基于这个问题,这不是他想要的