2011-11-18 23 views
5

Chúng tôi bắt đầu bằng số List<X>. Mỗi đối tượng của X có một thuộc tính x của loại Y. Bạn có thể đề xuất một cách thanh lịch để xây dựng một Danh sách bao gồm các Z.x cho mỗi phần tử Z của một số List<X>? Tôi chắc chắn rằng việc lặp lại "thủ công" trên List<X> là không cần thiết. Cảm ơn lời khuyên nào.Làm thế nào để trích xuất (trong C#) một thuộc tính cụ thể từ mọi phần tử của một Danh sách, và lấy một Danh sách mới của các thuộc tính này?

Trả lời

10

Nếu đây là List<T>, sau đó:

var newList = oldList.ConvertAll(item => item.x); 

hoặc với LINQ:

var newList = oldList.Select(item => item.x).ToList(); 

Lưu ý rằng trong C# 2.0 phiên bản đầu tiên có thể cần loại generic đề cập một cách rõ ràng:

List<Y> newList = oldList.ConvertAll<Y>(delegate (X item) { return item.x; }); 

(nhưng thực sự là 100% giống với dòng đầu tiên)

Ngoài ra còn có một static Array.ConvertAll hoạt động tương tự, nhưng đối với mảng.

Các vấn đề liên quan