c # получение списка из поля из списка - PullRequest
10 голосов
/ 02 сентября 2010

Извините за запутанный заголовок, но я не нашел лучшего способа объяснить мою проблему.

У меня есть список объектов, myList, давайте назовем их MyObject. объекты выглядят примерно так:

Class MyObject
{
    int MYInt{get;set;}
    string MYString{get;set;}
}

List<MyObject> myList;
...

Я ищу хороший / короткий / причудливый способ создания List<string> из myList, где я использую только свойство MyString.

Я могу сделать это, используя myList.forEach(), но мне было интересно, есть ли лучший способ

Спасибо !!

Ответы [ 3 ]

16 голосов
/ 02 сентября 2010

С LINQ:

var list = myList.Select(o => o.MYString);

Возвращает IEnumerable<string>.Чтобы получить List<string>, просто добавьте вызов к ToList():

var list = myList.Select(o => o.MYString).ToList();

Затем выполните итерацию результатов, как обычно:

foreach (string s in list)
{
    Console.WriteLine(s);
}
2 голосов
/ 02 сентября 2010

LINQ не нужен, если ваш список входов и выходов оба List<T>. Вместо этого можно использовать метод ConvertAll:

List<string> listOfStrings = myList.ConvertAll(o => o.MYString);
1 голос
/ 02 сентября 2010

Вот ответ Ахмада с использованием встроенного синтаксиса запроса:

var strings = from x in myList
              select x.MYString;

List<string> list = strings.ToList();

Это также может быть написано:

List<string> list = (from x in myList
                     select x.MYString).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...