Wenn ich eine Liste habe kann ich mit der Methode Exists() prüfen ob ein Element einem Prädikat (hier: l.Length > 5) entspricht.
list.Exists(l => l.Length > 5);
Da Exists aber nur für Listen existiert gibt es durch Linq eine neue Variante, nähmlich Any. Sofern ich die Doku richtig verstanden haben machen die beiden Methoden das gleiche, Linq ist aber auf IEnumerable anwendbar. Hier in Linq-Syntax:
IEnumerable.Any(a => a.Length > 5);
Was verwendet ihr? Gibt es Performance unterschiede?
List<T>.Exists (Func<T, bool>) ist seit Linq obsolet. Auch daran zu erkennen, dass Microsoft es bei Silverlight schon rausgeschmissen hat.
Falls Any<T>(this IEnumerable<T>, Func<T, bool>) der Performance-Bottleneck Deiner Applikation ist, lohnt es sich nicht zu überlegen, ob Exists (minimal) schneller ist, sondern Du musst den zugrundeliegenden Algorithmus so ändern, dass keine lineare Suche notwendig ist.
Mir gefällt der Hinweis auf die kritische Betrachtung der Performance. Stichwort 'keine lineare Suche notwendig': Mengenbasierte Auflistungen wie HashSet, Dictionary, ...wären die (naive) Alternative.
Stichwort 'keine lineare Suche notwendig': Mengenbasierte Auflistungen wie HashSet, Dictionary, ...wären die (naive) Alternative.