C#从类列表中提取字段列表

maf*_*afu 12 c# linq

我有一个特定类的元素列表.该类包含一个字段.

class Foo {public int i;}
List<Foo> list;
Run Code Online (Sandbox Code Playgroud)

我想将列表中所有项目的字段提取到一个新列表中.

List<int> result = list.ExtractField (e => e.i); // imaginary
Run Code Online (Sandbox Code Playgroud)

肯定有多种方法可以做到这一点,但我还没有找到一个漂亮的解决方案.我认为linq可能有所帮助,但我不确定究竟是怎么回事.

Jon*_*eet 22

只是:

List<int> result = list.Select(e => e.i).ToList();
Run Code Online (Sandbox Code Playgroud)

要么

List<int> result = list.ConvertAll(e => e.i);
Run Code Online (Sandbox Code Playgroud)

后者更有效(因为它知道开始的最终大小),但只适用于列表和数组而不是任何任意序列.