2013-05-30 71 views
3

我正在尋找一種優雅的方式來創建一個可讀的表單,生活在Generic.List中的所有項目的一些屬性。連接列表項屬性

讓我通過一個例子來說明它。我有一個數據結構是這樣的:

public class InfoItem { 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

這是我會怎麼用它在我的代碼:

List<InfoItem> data = new List<InfoItem>(); 
data.Add(new InfoItem() { Name = "Germany", Description = "Describes something" }); 
data.Add(new InfoItem() { Name = "Japan", Description = "Describes something else" }); 
data.Add(new InfoItem() { Name = "Austria", Description = "And yet something else" }); 

現在,我想要得到的,就像是「德國,日本的字符串,奧地利」。是否有一些LINQ或泛型魔術比這個原始循環做得更好?

string readableNames = ""; 
foreach (var item in data) { 
    readableNames += item.Name + ", "; 
} 
readableNames = readableNames.TrimEnd(new char[] { ',', ' ' }); 

回答

4

只需使用string.JoinEnumerable.Select

string readableNames = string.Join(", ", data.Select(i => i.Name)); 
+0

假設V4 +(我認爲這是一個很好的假設),否則你將不得不轉換爲'字符串[] '而不是'IEnumerable ' –

+0

謝謝,它的工作接近完美!由於它是.Net 3.5,我仍然需要在'.Select'之後添加'.ToArray()'。 – naivists

+0

沒問題。我的假設畢竟是錯誤的:),但我看到你照顧它。 – Zbigniew

2

var str = String.Join(", ", data.Select(x => x.Name));