Найти первый элемент определенного типа в списке, используя LINQ

Какова будет кратчайшая нотация, чтобы найти первый элемент определенного типа в списке элементов, использующих LINQ и С#.

Ответ 1

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

Обратите внимание, что метод First выдаст исключение, если нет элементов типа YourType. Если вы этого не хотите, вы можете использовать FirstOrDefault или Take(1), в зависимости от вашего поведения.

Ответ 2

Используйте метод расширения OfType:

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

Ответ 4

Вы можете просто использовать FirstOrDefault и передать делегат для использования для сравнения.

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

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