我如何将arraylist转换为string []?

时间:2012-07-16 09:22:56

标签: c# asp.net arraylist

  

可能重复:
  Convert ArrayList into string array(string[]) in c#

如何将数组列表转换为string[]?下面是我正在尝试的代码。我收到一个错误:

  

源数组中至少有一个元素无法转换为目标数组类型。

ArrayList myArrayList = new ArrayList();
foreach (DataRow dtRow in DtSet.Tables[0].Rows)
{
    myArrayList.Add(dtRow);
}

string[] myStringArray = (string[])myArrayList.ToArray(typeof(string));

7 个答案:

答案 0 :(得分:5)

您还在使用.NET 1.1吗?或者为什么不使用键入的List<T>代替ArrayList

首先,您无法将DataRow转换为String。您可以将every field of a DataRow转换为字符串。

如果您可以使用Linq,则可以使用以下代码获取所有行字段的String[],其中每个字段用逗号分隔:

String[] rowFields = DtSet.Tables[0]
                    .AsEnumerable()
                    .Select(r => string.Join(",", r.ItemArray));
                    .ToArray();

答案 1 :(得分:2)

您将多个DataRow个对象放入ArrayListDataRow不是string。所以:那不行。最好的情况是,你可以获得.ToString(),但坦率地说,这并不是那么有用 - 因为每行只会说System.Data.DataRow(因为它不会覆盖ToString()我认为你需要重新评估你想要做的事情。

基于评论讨论的示例:

DataTable table = ...
string[] strings = new string[table.Rows.Count];
int idx = 0;
foreach(DataRow row in table.Rows)
{
    StringBuilder sb = new StringBuilder();
    object[] cells = row.ItemArray;
    for(int i = 0 ; i < cells.Length ; i++)
    {
        if (i != 0) sb.Append(',');
        sb.Append('"').Append(cells[i]).Append('"');
    }
    strings[idx++] = sb.ToString();
}

答案 2 :(得分:2)

您无法获取DataRow(类型)并将其添加到ArrayList,期望它是一个字符串。 DataRow是一个对象,它有大量关于对象和对象数据的信息。

foreach(DataRow dtRow in dtSet.Tables[0].Rows)
{
    myArrayList.Add(dtRow["UserName"].ToString());
}

string[] myArray = myArrayList.ToArray(typeof(string));

答案 3 :(得分:1)

您的ArrayList元素的类型为DataRow。您正在尝试将其转换为string s的数组。 DataRow不是string(在向下转换时也不会成为一个),所以你不能这样做。

如果字符串数组是您最终想要的,那么在填充ToString时,您应该在每个元素上调用ArrayList(或者您需要的任何转换)。

(另外,正如Tim Schmelter在评论中所说,对于某些List<T>,您应该使用T - 可能是stringDataRow,具体取决于具体情况你的代码最终看起来如何 - 而不是ArrayList。)

答案 4 :(得分:1)

arrayList的每个项都是DataRow类型,你不能将它强制转换为字符串。

相反,您应该构造一个表示行内容的字符串,并将该字符串添加到列表中,例如

myArrayList.Add(dtRow["CustomerName"]);

答案 5 :(得分:0)

你试过这个:

string[] array = myArrayList.ToArray(typeof(string)) as string[];

答案 6 :(得分:0)

ArrayList myArrayList = new ArrayList();

myArrayList.Add("as");
myArrayList.Add("as");
myArrayList.Add("as");
myArrayList.Add("as");
myArrayList.Add("as");            
myArrayList.Add("as");

string[] array = myArrayList.ToArray(typeof(string)) as string[];
foreach (var item in array)
{
    Console.WriteLine(item.ToString());                
}

输出:

as
as
as
as
as
as