如何从List的每个元素中提取(在C#中)特定属性,并获取这些属性的新列表?

use*_*221 5 c# list

我们从一开始List<X>.X的每个对象都有一个Y类型的属性.你能提出一种优雅的方法来构造一个List,它由Z.x一些元素Z组成List<X>吗?我确信List<X>没有必要进行"手动"迭代.谢谢你的建议.

Mar*_*ell 10

如果是这样List<T>,那么:

var newList = oldList.ConvertAll(item => item.x);
Run Code Online (Sandbox Code Playgroud)

或者使用LINQ:

var newList = oldList.Select(item => item.x).ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,在C#2.0中,第一个版本可能需要显式提到的泛型类型:

List<Y> newList = oldList.ConvertAll<Y>(delegate (X item) { return item.x; });
Run Code Online (Sandbox Code Playgroud)

(但实际上与第一行完全相同)

还有一个静态的Array.ConvertAll行为类似,但对于数组.