Sprache: C#
Wenn man mit IEnumerables hantiert, hat man nicht mehr das praktikable .Count Property einer IList und nicht das .Length einers Arrays.
Koopakillers .HasCount() Funktion von hier
http://dotnet-snippets.de/snippet/linq-erweiterung-hascount/3818
hat mir die Idee gegeben, wie man .Count() > 0 performanter machen kann.
Der folgende Code benutzt Koopakillers .HasCount() Funktion, ohne sie hier zu kopieren.
public static bool HasItems<TSource>(this IEnumerable<TSource> source)
{
var hasItems = source.HasCount(1);
return hasItems;
}
public static bool HasItems<TSource>(this IEnumerable<TSource> source)
{
var hasItems = source.HasCount(1);
return hasItems;
}
Alte URL:
/snippet/linq-performanterer-ersatz-fuer-count-0/5965
Während es nett von dir ist, deine Erweiterungen mit uns zu teilen, solltest du dir doch nochmal den LINQ namespace weiter ansehen.
Man kann statt deiner Methode auch einfach die Standard Methode „Any“ benutzen, die genau dieses macht (Liste durchgehen, bis ein Element (das auf den selector passt) gefunden wurde und dann abbrechen, ohne den Rest anzusehen)
var hasItems = someList.Any();
Du hast recht.
Ich kannte zwar die Any-Methode, habe sie bisher aber nur als Check-Methode (mit der predicate-Überladung verwendet).
Manchmal ist den Linq-Methodennamen nicht direkt anzusehen, was genau sie eigentlich treiben.