【问题标题】:iterating a list with ForEach使用 ForEach 迭代列表
【发布时间】:2011-01-22 10:48:13
【问题描述】:

我有一个这样的列表

Dim emailList as new List(Of String)
emailList.Add("one@domain.com")
emailList.Add("two@domain.com")
emaillist.Add("three@domain.com")

如何使用 ForEach 迭代列表以获取一个包含此类电子邮件的字符串

one@domain.com;two@domain.com;three@domain.com

【问题讨论】:

    标签: vb.net list foreach


    【解决方案1】:

    我不确定您为什么要使用 foreach 而不是 String.Join 语句。您可以简单地使用分号作为加入字符的 String.Join() 列表。

    String.Join(";", emailList.ToArray())
    

    【讨论】:

    • @NebuSoft - 我完全忘记了这一点......我一定老了......为你+1......我撤回了我的答案。
    • 那行不通。第二个参数是字符串数组,不是泛型列表。
    • 抱歉,我从 VB6 开始就没有使用过 VB。在 C# 中,您可以将通用列表放入数组 (emailList.ToArray())...我确信通过 VB.NET 有一个等价物
    • 如果是整数列表,有没有办法使用这种机制?
    【解决方案2】:

    你可以试试

    Dim stringValue As String = String.Join(";", emailList.ToArray)
    

    看看String.Join Method

    【讨论】:

      【解决方案3】:

      我实际上不会为此使用 ForEach 循环。这是我会做的:

      String.Join(";", emailList.ToArray());
      

      【讨论】:

        【解决方案4】:
               Dim emailList As New List(Of String)
            emailList.Add("one@domain.com")
            emailList.Add("two@domain.com")
            emailList.Add("three@domain.com")
        
            Dim output As StringBuilder = New StringBuilder
            For Each Email As String In emailList
                output.Append(IIf(String.IsNullOrEmpty(output.ToString), "", ";") & Email)
            Next
        

        【讨论】:

          【解决方案5】:
          Dim emailList As New StringBuilder()
          
          For Each (email As String In emails)
               emailList.Append(String.Format("{0};", email))
          Next
          
          Return emailList.ToString()
          

          如果有任何语法错误,请见谅……我的 VB.NET 有点生锈,而且我手边没有编译器。

          【讨论】: