C# 在C中,是否有一个;“容易”;在复杂类型列表上执行string.Join的方法?

C# 在C中,是否有一个;“容易”;在复杂类型列表上执行string.Join的方法?,c#,string,C#,String,假设我有一个对象: public class Role { public string Name { get; set; } public string Slug { get; set; } public DateTime DateAssigned { get; set; } ... } 一个成员可以有多个角色:member.roles=List() 如果我想将成员的角色加入到一个以逗号分隔的角色名称列表中,有没有一种简单的方法(类似于string.join(“

假设我有一个对象:

public class Role {
    public string Name { get; set; }
    public string Slug { get; set; }
    public DateTime DateAssigned { get; set; }
    ...
}
一个成员可以有多个角色:
member.roles=List()


如果我想将成员的角色加入到一个以逗号分隔的角色名称列表中,有没有一种简单的方法(类似于
string.join(“,”,member.roles);
-因为角色是复杂类型,所以不起作用)?

是的,您可以使用重载(在.NET 4中新增),它需要
IEnumerable
和一点Linq:

String joined = string.Join(",", member.Roles.Select(r => r.Name));

另一个选项是重写
角色
类的
ToString()
方法以返回所需的内容,然后只发出此语句

var joined = string.Join(",", member.Roles)

如果您只想要Name属性,那么其他答案也不错

但如果您有更多属性,请调整
ToString()
以匹配:

public override String ToString()
{
    return String.Format("Name: {0}. Slug : {1}", Name, Slug);
}
等等,然后称之为

 String.Join(", ", member.Roles);
你不需要打电话

String.Join(", ", member.Roles.Select(x => x.ToString())
因为它将由
String.Join()中的对象在内部调用,所以如果重写
ToString()
,只需调用

String.Join(", ", member.Roles);

也许可以使用类似于
member.Roles.Select(x=>x.Name).ToList()
?继续吧,感谢您的快速回答(以及Colonel Panic的使用声明!)非常优雅+1@DanielMar林:谢谢:)
String.Join(", ", member.Roles);