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);