ArrayList类型转换问题
我自己写了一个将ListView列数据转换为ArrayList的方法:
/// <summary>
/// ListView列数据转换为ArrayList
/// </summary>
/// <param name= "lv "> ListView </param>
/// <param name= "Ind "> 列索引 </param>
/// <returns> </returns>
public static ArrayList ListViewCol( ListView lv ,int Ind )
{
ArrayList col = new ArrayList();
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( lv.Items[i].SubItems[Ind].Text.Trim() ) ;
}
return col ;
}
但是在将它转换为int[]或者其他类型数组的时候报错:
源数组中至少有一个元素无法被向下转换到目标数组类型。
我的转换代码:
obj.IDNo = (int[]) Comm.Functions.ListViewCol( lvInput,0 ).ToArray(typeof(int)) ;
obj.IDNo 是一个int型的数组。
------解决方案--------------------自己可以再扩充一下:
#region ListView列数据转换为ArrayList
/// <summary>
/// ListView列数据转换为ArrayList
/// </summary>
/// <param name= "lv "> ListView </param>
/// <param name= "Ind "> 列索引 </param>
/// <param name= "TypeID "> 要转换的类型(0:string 1:int 2:decimal 3:datetime) </param>
/// <returns> </returns>
public static ArrayList ListViewCol( ListView lv ,int Ind ,int TypeID)
{
ArrayList col = new ArrayList();
if( TypeID==0 )//string
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( lv.Items[i].SubItems[Ind].Text.Trim() ) ;
}
else if( TypeID==1 )//int
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( int.Parse(lv.Items[i].SubItems[Ind].Text.Trim()) ) ;
}
else if( TypeID==2 )//decimal
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( decimal.Parse(lv.Items[i].SubItems[Ind].Text.Trim()) ) ;
}
else if( TypeID==3 )//datetime
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( System.DateTime.Parse(lv.Items[i].SubItems[Ind].Text.Trim()) ) ;
}
return col ;
}
#endregion