2013-04-05 89 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