Перетворити список об’єктів у масив одного із властивостей об'єкта


133

Скажіть, у мене такий клас:

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

а потім я складаю список наступних класів ( List<ConfigItemType> MyList)

Тепер у мене є метод із наступним підписом:

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

Як я можу вписатись MyListна listGoesHereвикористання значення в ConfigItemType.Nameякості масиву рядків params?

Я досить впевнений, що Linq може це зробити .... але MyListне має selectметоду для цього (що я б використав).

Відповіді:


278

Ви шукаєте

MyList.Select(x=>x.Name).ToArray();

Оскільки Selectце метод розширення, не забудьте додати це ім'я, додавши

using System.Linq

у ваш файл - тоді він з’явиться разом із Intellisense.


Саме про це я і думав. Але Select не відображається в intellisense.
Ваккано

GAAAAAAA! Мені не вистачало включення linq!
Ваккано

1
вам потрібно використовувати за допомогою System.Data.Linq; потім дотримуйтесь відповіді BrokenGlass
Рамі Шаріф

1
Я німий! Ну добре. Безкоштовна представниця за допомогу мені розібратися.
Ваккано

фантастичне рішення. Я хотів отримати доступ до String "id" у своєму списку об'єктів. Працював ідеально List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box

19

Я цілком впевнений, що Linq може це зробити .... але у MyList немає методу вибору на цьому (що я б використав).

Так, LINQ може це зробити. Це просто:

MyList.Select(x => x.Name).ToArray();

Швидше за все, проблема полягає в тому, що ви або не маєте посилання на нього System.Core, або вам не вистачає usingдирективи для System.Linq.



6

Для всіх, хто застряг із .NET 2.0, як я, спробуйте наступним чином (застосовно до прикладу в ОП):

ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) 
{ 
   return ci.Name; 
}).ToArray();

де ConfigItemList - ваша змінна список.


Дякуємо за публікацію для .NET 2.0 натовпу!
черв'як
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.