2009-08-24 29 views

Trả lời

25
var first = yourCollection.OfType<YourType>().First(); 

Lưu ý rằng phương pháp First sẽ ném một ngoại lệ nếu không có yếu tố của loại YourType. Nếu bạn không muốn điều đó thì bạn có thể sử dụng FirstOrDefault hoặc Take(1) thay vào đó, tùy thuộc vào hành vi bạn muốn.

12

Sử dụng các phương pháp khuyến nông OfType:

public static T FindFirstOfType<T>(IEnumerable list){ 
return list.OfType<T>().FirstOrDefault(); 
} 
+2

danh sách IEnumerable này để làm cho nó là một phần mở rộng? –

5

Bạn chỉ có thể sử dụng FirstOrDefault và vượt qua trong các đại biểu để sử dụng cho việc so sánh.

object[] list = new object[] { 
    4, 
    "something", 
    3, 
    false, 
    "other" 
}; 

string first = list.FirstOrDefault(o => o is string); //something 
+0

Mã của bạn không biên dịch. Bởi vì 'FirstOrDefault' trả về một' đối tượng' và bạn phải đưa nó vào 'chuỗi' để nó được gán cho biến đầu tiên được khai báo là' chuỗi'. –

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