2009-08-24 40 views

回答

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

注意,如果没有YourType类型元素的First方法会抛出异常。如果你不想那么做,那么你可以用FirstOrDefaultTake(1)来代替,这取决于你想要的行为。

12

使用OfType扩展方法:

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

这个IEnumerable列表使其成为一个扩展? – 2009-08-24 18:15:37

5

你可以只使用FirstOrDefault并传入委托使用的比较。

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

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

你的代码不能编译。因为'FirstOrDefault'正在返回一个'object',所以你必须将它转换为'string',以便将它赋值给声明为'string'的第一个变量。 – 2016-01-07 15:25:20

相关问题