如何使用类的Id属性作为值将List <T>转换为逗号分隔列表

cod*_*ing 41 c# linq

我有一个List<User>集合,我想使用User.Id属性创建一个逗号分隔的字符串,所以:

"12321,432434,123432452,1324234"
Run Code Online (Sandbox Code Playgroud)

我是用循环完成的,但希望有人能告诉我linq方式?

Jon*_*eet 102

在.NET 4中:

string joined = string.Join(",", list.Select(x => x.Id));
Run Code Online (Sandbox Code Playgroud)

在.NET 3.5中:

string joined = string.Join(",", list.Select(x => x.Id.ToString()).ToArray());
Run Code Online (Sandbox Code Playgroud)

区别在于.NET 4的重载列表string.Join.NET 3.5中的重载列表更宽,而您真正想要重载是"新" 重载之一:

public static string Join<T>(string separator, IEnumerable<T> values)
Run Code Online (Sandbox Code Playgroud)

您仍然可以在.NET 2.0中执行此操作,只使用List<T>特定方法而不是LINQ(我假设您仍然可以使用C#3):

string joined = string.Join(",", list.ConvertAll(x => x.Id.ToString())
                                     .ToArray());
Run Code Online (Sandbox Code Playgroud)

  • 所以这些都是不友好的也不对吗?我会保护的.顺便说一下,你不在手机上回答这些吗? (2认同)