2013-10-18 85 views
-1

對象Book具有Author它具有string類型的屬性Name從數組中獲得值並將其添加到一個字符串中

我想要遍歷低谷所有作者,並添加它的名稱字符串以逗號分隔的一個字符串(不是數組),所以此字符串應該是在爲

string authorNames = "Author One, Author two, Author three"; 

string authorNames = string.Empty; 
foreach(string item in book.Authors) 
{ 
    string fetch = item.Name; 
    ?? 
} 

回答

6

您可以使用string.Join功能與LINQ

string authorNames = string.Join(", ", book.Authors.Select(a => a.Name)); 
0

使用LinQ,有很多方法可以將多個字符串合併爲一個字符串。

book.Authors.Select(x => x.Name).Aggregate((x, y) => x + ", " + y); 

要anwsers詹姆斯的評論

[TestMethod] 
public void JoinStringsViaAggregate() 
{ 
    var mystrings = new[] {"Alpha", "Beta", "Gamma"}; 
    var result = mystrings.Aggregate((x, y) => x + ", " + y); 

    Assert.AreEqual("Alpha, Beta, Gamma", result); 
} 
+0

您確定這可行嗎?你不需要種子/累加器函數來使用聚合?這裏x和y的類型是什麼,其中一個必須是一個不具有Name屬性的累積值(在這種情況下是一個字符串)? –

+0

你說得對,我要先選出姓名 –

0

您可以使用

string authors = String.Join(", ", book.Authors.Select(a => a.Name)); 
+0

爲什麼downvote? – Raidri

+0

+1。戰略downvote? http://meta.stackexchange.com/questions/17204/six-simple-tips-to-get-stack-overflow-reputation-fast –

0

LINQ是要走的路在C#中,bu這裏噸解釋的目的是你如何能明確地編寫它:

string authorNames = string.Empty; 
for(int i = 0; i < book.Authors.Count(); i++) 
{ 
    if(i > 0) 
     authorNames += ", "; 
    authorNames += book.Authors[i].Name; 
} 
0

你也遍歷所有這些,並把它們添加到authorNames,並在末尾加上一個逗號,當它這樣做只是修剪最後的逗號。

string authorNames = string.Empty; 
foreach(string author in book.Authors) 
{ 
    string authorNames += author.Name + ", "; 
} 
authorNames.TrimEnd(','); 
相關問題