Подтвердить что ты не робот

Как преобразовать список <T> в список, разделенный запятыми, используя свойство класса Id как значение

У меня есть коллекция List<User>, и я хочу создать разделенную запятую строку с использованием свойства User.Id, поэтому:

"12321,432434,123432452,1324234"

Я сделал это, используя цикл, но надеялся, что кто-то сможет показать мне способ linq?

4b9b3361

Ответ 1

В .NET 4:

string joined = string.Join(",", list.Select(x => x.Id));

В .NET 3.5:

string joined = string.Join(",", list.Select(x => x.Id.ToString()).ToArray());

Разница в том, что список перегрузки .NET 4 для string.Join шире, чем тот, что в .NET 3.5 и перегрузка, которую вы действительно хотите, является одним из "новых":

public static string Join<T>(string separator, IEnumerable<T> values)

Вы все еще можете сделать это в .NET 2.0, просто используя List<T> -специфический метод вместо LINQ (я предполагаю, что вы все еще можете использовать С# 3):

string joined = string.Join(",", list.ConvertAll(x => x.Id.ToString())
                                     .ToArray());

Ответ 2

Учитывая этот список:

List<User> users = (GetUsers() ?? new List<User>())
   .Where(u => u != null).ToList();

// no more nulls

.NET 3.5 - String.Join

Присоединиться (String, String())

Присоединиться (String, String(), Int32, Int32)

Пример:

return string.Join(",", users.Select(u => u.Id.ToString()).ToArray());

.NET 4.0 - String.Join

Присоединиться (String, IEnumerable (Of String))

Join (Of T) (String, IEnumerable (Of T))

Присоединиться (String, Object())//действительно? Просто присоединяйтесь к "вещам"?

Присоединиться (String, String())

Присоединиться (String, String(), Int32, Int32)

Пример

return string.Join(",", users.Select(u => u.Id));

Ответ 3

использовать

string myResult = string.Join (",", (from l in myList select l.ID.ToString()).ToArray());

Ответ 4

string.Join( ",", list.Select( item => item.ID ).ToArray() );