我有一个特定类的元素列表。该类包含一个字段。
class Foo {public int i;}
List<Foo> list;
我想将列表中所有项目的字段提取到一个新列表中。
List<int> result = list.ExtractField (e => e.i); // imaginary
肯定有多种方法可以做到这一点,但我还没有找到一个漂亮的解决方案。我认为linq可能有所帮助,但我不确定究竟是怎么回事。
答案 0 :(得分:20)
只需:
List<int> result = list.Select(e => e.i).ToList();
或
List<int> result = list.ConvertAll(e => e.i);
后者效率更高(因为它知道最终的大小),但只适用于列表和数组而不是任意序列。