C# 无法强制转换类型为';System.Collections.ArrayList';输入';System.IConvertible';

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

我必须根据一个特定列的空值获取行数。我使用了下面给出的代码。此处cad assign列包含值,也包含空值。我必须计算cad_分配的空值数量,并在此基础上显示值

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;

基于这个问题,这不是他想要的