有没有办法获取通用列表并将某个属性加入逗号分隔值?
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";
答案 0 :(得分:5)
string.Join(String, String[])
。有一种方法可以完成你想要做的事情:
string.Join(",", list.Select(c=>c.Name).ToArray());
答案 1 :(得分:2)
此扩展程序Join
代表LINQ Join
。
List<Color> list = new List<Color>();
list.Join(...)
如果要在字符串中连接集合,则需要使用String.Join
以下内容将生成所需的"red, blue"
字符串:
String.Join(", ", list.Select(x => x.Name));
答案 2 :(得分: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>
答案 3 :(得分:0)
当然,从.NET 4 String.Join
开始String.Join(string, IEnumerable<string>)
过载。您甚至可以避免使用String.Join(string, IEnumerable<T>)
重载来调用ToString
。
所以这些都是有效的:
String.Join(",", new List<int> { 1, 2, 3 });
String.Join(",", new List<string> { "1", "2", "3" });