С# Извлечь список полей из списка классов
У меня есть список элементов определенного класса. Этот класс содержит поле.
class Foo {public int i;}
List<Foo> list;
Я хотел бы извлечь поле из всех элементов в списке в новый список.
List<int> result = list.ExtractField (e => e.i); // imaginary
Конечно, есть несколько способов сделать это, но я пока не нашел красивого решения. Я решил, что linq может помочь, но я не был уверен, как именно.
Ответы
Ответ 1
Просто:
List<int> result = list.Select(e => e.i).ToList();
или
List<int> result = list.ConvertAll(e => e.i);
Последний более эффективен (поскольку он знает конечный размер для начала), но будет работать только для списков и массивов, а не для любой произвольной последовательности.