假设我有这个对象:
public class Role {
public string Name { get; set; }
public string Slug { get; set; }
public DateTime DateAssigned { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
成员可以有多个角色: member.Roles = List<Role>();
如果我想将成员的角色加入到逗号分隔的角色名称列表中,是否有一种简单的方法(类似于string.Join(",", member.Roles);- 因为角色是复杂类型而无效)?
Maa*_*ten 57
using System.Linq
string.Join(",", member.Roles.Select(r => r.Name))
Run Code Online (Sandbox Code Playgroud)
如果您只想要Name属性,那么其他答案都是好的
但是如果您有更多属性,请调整您ToString()的匹配:
public override String ToString()
{
return String.Format("Name: {0}. Slug : {1}", Name, Slug);
}
Run Code Online (Sandbox Code Playgroud)
等等,然后称之为
String.Join(", ", member.Roles);
Run Code Online (Sandbox Code Playgroud)
你不需要打电话
String.Join(", ", member.Roles.Select(x => x.ToString())
Run Code Online (Sandbox Code Playgroud)
因为它会被内部的对象内部调用String.Join(),所以如果你覆盖ToString(),你只需要调用
String.Join(", ", member.Roles);
Run Code Online (Sandbox Code Playgroud)
是的,您可以使用String.Join(在.NET 4中新增加的)重载,它需要IEnumerable<String>一点点Linq:
String joined = string.Join(",", member.Roles.Select(r => r.Name));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8485 次 |
| 最近记录: |