2014-04-17 144 views
0

我有一个List<string>,我想识别列表中的第一个或最后一个元素,以便我可以识别与该项目有关的其他函数。Foreach循环中List <>中的第一个或最后一个元素

例如,

foreach (string s in List) 
{ 
    if (List.CurrentItem == (List.Count - 1)) 
    { 
     string newString += s; 
    } 
    else 
    { 
     newString += s + ", "; 
    } 
} 

我该如何去定义List.CurrentItem?在这种情况下,for循环会更好吗?

回答

0

可以使用计数器这样

  int counter = 0 ; 
     foreach (string s in List) 
     { 
       if (counter == 0) // this is the first element 
       { 
        string newString += s; 
       } 
       else if(counter == List.Count() - 1) // last item 
       { 
       newString += s + ", "; 
       }else{ 
       // in between 
       } 
       counter++; 
     } 
8

而是利用String.Join

串接指定数组的元素或一个 集合的成员的,使用每一个元素或 构件之间的指定的分隔符。

它简单得多。

喜欢的东西

 string s = string.Join(", ", new List<string> 
     { 
      "Foo", 
      "Bar" 
     }); 
0

尝试这样:

string newString = ""; 

foreach (string s in List) 
{ 
    if(newString != "") 
    newString += ", " + s; 
    else 
    newString += s; 
} 
1

您可以使用基于LINQ的解决方案

例:

var list = new List<String>(); 
list.Add("A"); 
list.Add("B"); 
list.Add("C"); 

String first = list.First(); 
String last = list.Last(); 
List<String> middle_elements = list.Skip(1).Take(list.Count - 2).ToList(); 
+0

如果您的列表只有1个元素会发生什么? –

+0

这是一个非常特殊的情况,在使用上面的例子之前必须进行预先检查! –

相关问题