Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从类列表中提取字段列表_C#_Linq - Fatal编程技术网

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

C#从类列表中提取字段列表,c#,linq,C#,Linq,我有一个特定类的元素列表。此类包含一个字段 class Foo {public int i;} List<Foo> list; class Foo{public int i;} 名单; 我想将该字段从列表中的所有项提取到一个新列表中 List<int> result = list.ExtractField (e => e.i); // imaginary List result=List.ExtractField(e=>e.i);//虚构的 当然有多种方法可

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

class Foo {public int i;}
List<Foo> list;
class Foo{public int i;}
名单;
我想将该字段从列表中的所有项提取到一个新列表中

List<int> result = list.ExtractField (e => e.i); // imaginary
List result=List.ExtractField(e=>e.i);//虚构的
当然有多种方法可以做到这一点,但我还没有找到一个好看的解决方案。我想linq可能会有所帮助,但我不确定具体如何。只是:

List<int> result = list.Select(e => e.i).ToList();
List result=List.Select(e=>e.i.ToList();

List result=List.ConvertAll(e=>e.i);

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

谢谢Jon,Marc,这很快。:)是否有充分的理由表明LINQ不够聪明,无法在这种情况下知道最终大小将是
list.Count
?@TimS.:
Select
的结果“只是”一个序列。理论上,如果
Select
的输入是一个
IList
,那么输出可能是一个接口的某个实现,该接口还公开了一个
Count
属性,但事实并非如此。不过,这将是一个有趣的替代实现。
List<int> result = list.ConvertAll(e => e.i);