С# Извлечь список полей из списка классов

У меня есть список элементов определенного класса. Этот класс содержит поле.

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);

Последний более эффективен (поскольку он знает конечный размер для начала), но будет работать только для списков и массивов, а не для любой произвольной последовательности.