在C#中将数组列表转换为逗号分隔的字符串

时间:2015-06-18 13:17:57

标签: c# asp.net arrays

我正在使用 String.Join 尝试将数组列表转换为以逗号分隔的字符串,例如

xxx@xxx.com,yyy@xxx.com,zzz@xxx.com,www@xxx.com

我似乎无法使语法正常工作。

以下是我正在尝试的内容:

    for (i = 0; i < xxx; i++)
    {
        MailingList = arrayList[i].ToString();
        MailingList = string.Join(", ", MailingList.ToString());
        Response.Write(MailingList.ToString());
    }

你能帮助我吗?

提前谢谢 -

4 个答案:

答案 0 :(得分:4)

根据变量的名称(arrayList)进行猜测,您已获得List<string[]>或同等类型。

这里的问题是您在阵列上调用ToString()。 试试这个:

for (i = 0; i < xxx; i++)
{
    var array = arrayList[i];
    MailingList = string.Join(", ", array);
    Response.Write(MailingList);
}

编辑:如果arrayList只是一个包含字符串的ArrayList,那么您可以这样做

Response.Write(string.Join(", ", arrayList.OfType<string>()));

我个人会尽可能避免使用非通用集合(例如ArrayList)并使用来自System.Collections.Generic的强类型集合,例如List<string>。例如,如果你有一段依赖于的代码ArrayList的所有内容都是字符串,那么如果你不小心添加了一个不是a的项目,它将遭受灾难性的损失字符串。

编辑2:如果您的ArrayList实际上包含了您在评论中提及的System.Web.UI.WebControls.ListItemarrayList.AddRange(ListBox.Items);,那么您需要使用此代码:

Response.Write(string.Join(", ", arrayList.OfType<ListItem>()));

答案 1 :(得分:2)

String.Join的第二个参数需要是IEnumerable。将MailingList.ToString()替换为arrayList,它应该有效。

答案 2 :(得分:-1)

初​​始化:

string result = string.Empty;

对于值类型:

if (arrayList != null) {
   foreach(var entry in arrayList){
      result += entry + ',';
   }
}

对于参考类型:

if (arrayList != null) {
   foreach(var entry in arrayList){
      if(entry != null)
         result += entry + ',';
   }
}

清理:

if(result == string.Empty)
   result = null;
else
   result = result.Substring(0, result.Length - 1);

答案 3 :(得分:-1)

大多数答案已经存在,仍然发布了一个完整的工作片段

string[] emailListOne = { "xxx@xxx.com", "yyy@xxx.com", "zzz@xxx.com", "www@xxx.com" };
string[] emailListTwo = { "xxx@xxx1.com", "yyy@xxx1.com", "zzz@xxx1.com", "www@xxx1.com" };
string[] emailListThree = { "xxx@xxx2.com", "yyy@xxx2.com", "zzz@xxx2.com", "www@xxx.com" };
string[] emailListFour = { "xxx@xxx3.com", "yyy@xxx3.com", "zzz@xxx3.com", "www@xxx3.com" };

List<string[]> emailArrayList = new List<string[]>();
emailArrayList.Add(emailListOne);
emailArrayList.Add(emailListTwo);
emailArrayList.Add(emailListThree);
emailArrayList.Add(emailListFour);

StringBuilder csvList = new StringBuilder();
int i = 0;
foreach (var list in emailArrayList)
{
   csvList.Append(string.Join(",", list));
   if(i < emailArrayList.Count - 1)
      csvList.Append(",");
   i++;
}
Response.Write(csvList.ToString());