Eine andere Sicht auf FirstOrDefault

Die IEnumerable-Erweiterungsmethode FirstOrDefault hat nicht genau das getan, was ich wollte. Deshalb habe ich FirstOrValue erstellt. Ist dies ein guter Weg, um dies zu tun, oder gibt es einen besseren Weg?

public static T FirstOrValue<T>(this IEnumerable<T> source, Func<T, bool> predicate, T value)
{
    T first = source.FirstOrDefault(predicate);
    return Equals(first, default(T)) ? value : first;
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage