How to convert a List into a comma-separated list, using the class's Id property as the value

前端 未结 4 1918
[愿得一人]
[愿得一人] 2020-12-24 01:21

I have a List collection, and I want to create a comma seperated string using the User.Id property, so:

\"12321,432434,123432452,132         


        
相关标签:
4条回答
  • 2020-12-24 01:40

    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));
    
    0 讨论(0)
  • 2020-12-24 01:40
    string.Join( ",", list.Select( item => item.ID ).ToArray() );
    
    0 讨论(0)
  • 2020-12-24 01:45

    use

    string myResult = string.Join (",", (from l in myList select l.ID.ToString()).ToArray());
    
    0 讨论(0)
  • 2020-12-24 01:55

    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());
    
    0 讨论(0)
提交回复
热议问题