簡體   English   中英

在C#中將數組列表轉換為逗號分隔的字符串

[英]Convert Array List to Comma Separated String in C#

我正在使用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());
    }

你能幫助我嗎?

先感謝您-

從變量名( 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所有內容都是字符串,那么如果您不小心添加了不是字符串的項目,它將遭受災難性的影響。

編輯2:如果您的ArrayList實際上包含System.Web.UI.WebControls.ListItem就像您在注釋中提到的那樣: arrayList.AddRange(ListBox.Items); ,那么您將需要使用它:

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

String.Join的第二個參數必須是IEnumerable 更換MailingList.ToString()arrayList ,它應該工作。

初始化:

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);

大多數答案已經存在,仍在發布完整的工作片段

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM