2015-11-19 15 views
1

有沒有辦法使用通用列表並將特定屬性加入逗號分隔值?我可以在通用列表中使用string.join

public class Color 
{ 
    public int Id {get; set;} 
    public string Name{get; set;} 
} 

List<Color> list = new List<Color>(); 
Color c1 = new Color() { Id = 1, Name = "red" } 
Color c2 = new Color() { Id = 2, Name = "blue" } 

我可以這樣做

list.Join(

得到

"red, blue"; 

回答

5

不,你不能。該方法定義爲string.Join(String, String[])。有一種方法可以完成您正在嘗試執行的操作:

string.Join(",", list.Select(c=>c.Name).ToArray()); 
+0

該方法有defenition string.Join(字符串,IEnumerable )以及。 https://msdn.microsoft.com/zh-cn/library/dd992421(v=vs.110).aspx – unconnected

+0

公平點,如果您使用.net 4或更高版本。 – mrtig

2

這個擴展Join代表LINQ Join

List<Color> list = new List<Color>(); 
list.Join(...) 

如果要連接字符串中的集合,則需要使用String.Join
下面將導致所需"red, blue"字符串:

String.Join(", ", list.Select(x => x.Name)); 
+0

出了什麼問題我的答案? :) –

+0

你需要ToString()覆蓋:) – mrtig

+0

@mrtig是的,我很着急。你值得接受的答案:) –

0

您可以對泛型使用String.Join。但是,爲了得到你想要的,你必須做出一些修改你的代碼,否則你會得到這樣的結果爲:

Namespace.Color, Namespace.Color 

選項A爲mrtig建議:

String.Join(",", list.Select(x=>x.Name)) 

選項B,用的ToString擴展類:

public class Color 
{ 
    public int Id {get; set;} 
    public string Name{get; set;} 
    public string ToString(){ 
    return this.Name; 
    } 
} 

現在你可以使用:

String.Join(",",list) //where list is IEnumerable<Color> 
相關問題