Feedback

Linq: Performanterer Ersatz für .Count() > 0

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;
}

2 Kommentare

  1. 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();

  2. 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.