2013-04-05 75 views
-7

在我後面的代碼我的名字...(特雷西,米歇爾和Tiffany)C#ASP.NET for循環問題

的列表,我有一個字符串叫名字和每個名字被添加到字符串,但它顯示是這樣的(崔西米歇爾·蒂芙尼)

我將如何得到它,它提供了逗號每個名稱後,最後一個前放和..

這裏是我的一些代碼

string names = ""; 

    for(int i=0; i< GroupOfPeople.Count; i++) 
    { 
     GroupOfPeople nm = (GroupOfPeople) nm.GroupOfPeople[i]; 
     names += nm.FirstName;       
    } 
+3

你試過'名+ = 「,」+ nm.FirstName'?然後拋出一個'if'的條件來使這個''和''在最後一個名字之前? – 2013-04-05 20:06:23

+1

沒有看到更多的代碼...'string.Join()'([see here](http://msdn.microsoft.com/en-us/library/57a79xd0.aspx)),結合選擇/投影你的列表名稱變成'IEnumerable ' – 2013-04-05 20:07:08

回答

1

這樣做

for(int i=0; i< GroupOfPeople.Count; i++) 
     { 
      GroupOfPeople nm = (GroupOfPeople) nm.GroupOfPeople[i]; 
       if(i < GroupOfPeople.Count - 1) 
        names += nm.FirstName + ", "; 
       else 
        names += " and " + nm.FirstName; 

     } 
2

如果你使用.NET 4.0或更高版本,可以使用String.Join接受一個IEnumerable<string>

var nameList = new List<string>(); 
for(int i=0; i< GroupOfPeople.Count; i++) { 
    GroupOfPeople nm = (GroupOfPeople) nm.GroupOfPeople[i]; 
    nameList.Add(nm.FirstName); 
} 
var names = string.join(", ", nameList); 

很難沒有看到的GroupOfPeople接口是否有可能做到這一點,而無需創建一個明確的清單說。如果有一種方法使用LINQ to選擇GroupOfPeople都直呼其名,它插入表情到最後一行代替nameList

var names = string.join(
    ", " 
, GroupOfPeople.Cast<GroupOfPeople>().Select(nm => nm.FirstName) 
); //    ^^^^^^^^^^^^^^^^^^^^^^ The above cast may be unnecessary