I have a List
collection, and I want to create a comma seperated string using the User.Id property, so:
\"12321,432434,123432452,132
Given this list:
List<User> users = (GetUsers() ?? new List<User>())
.Where(u => u != null).ToList();
// no more nulls
.NET 3.5 - String.Join
Join(String, String())
Join(String, String(), Int32, Int32)
Example:
return string.Join(",", users.Select(u => u.Id.ToString()).ToArray());
.NET 4.0 - String.Join
Join(String, IEnumerable(Of String))
Join(Of T)(String, IEnumerable(Of T))
Join(String, Object()) // really? Just joining "stuff"?
Join(String, String())
Join(String, String(), Int32, Int32)
Example
return string.Join(",", users.Select(u => u.Id));
string.Join( ",", list.Select( item => item.ID ).ToArray() );
use
string myResult = string.Join (",", (from l in myList select l.ID.ToString()).ToArray());
In .NET 4:
string joined = string.Join(",", list.Select(x => x.Id));
In .NET 3.5:
string joined = string.Join(",", list.Select(x => x.Id.ToString()).ToArray());
The difference is that .NET 4's overload list for string.Join is wider than the one in .NET 3.5, and the overload you really want is one of the "new" ones:
public static string Join<T>(string separator, IEnumerable<T> values)
You can still do it in .NET 2.0, just using a List<T>
-specific method instead of LINQ (I'm assuming you can still use C# 3):
string joined = string.Join(",", list.ConvertAll(x => x.Id.ToString())
.ToArray());