Vereinfachen von LINQ-Ausdrücken

Dieses Refactoring gilt für:

  • C#

Beschreibung: Führt Refactoring von Instanzen von SomeEnumerableType.Where(<LambdaExpression>).Single() in SomeEnumerable.Single(<LambdaExpression>) für Enumerable.Single() sowie die folgenden Enumerable-Methoden aus: SingleOrDefault(), Last(), LastOrDefault(), Any(), Count(), First() und FirstOrDefault().

Hintergrund: Alle Instanzen, in denen die Methode Single(), SingleOrDefault() usw. aufruft, besitzen keine Argumente, und ihnen wird ein Where()-Ausdruck vorangestellt. Die Eingabe für den Where()-Ausdruck kann nicht als Ausdrucksbaumstruktur erstellt werden.

Grund: Durch das Entfernen des nicht erforderlichen Enumerable-Aufrufs für die .Where()-Methode wird die Lesbarkeit und in manchen Fällen auch die Leistung verbessert. Weitere Informationen finden Sie in den Hinweisen.

Vorgehensweise

  1. Platzieren Sie den Cursor innerhalb der SomeEnumerableType.Where(<LambdaExpression>).Single()-Instanz in Visual Studio.

  2. Drücken Sie STRG+., um das Menü Schnellaktionen und Refactorings aufzurufen.

  3. Wählen Sie LINQ-Ausdruck vereinfachen aus.

    Convert typeof to nameof

Hinweise

In einigen Fällen kann dieses Refactoring die Leistung beeinträchtigen. LINQ-Vorgänge für List<T> und T[] werden in diesem Fall nicht optimiert und führen zu einer Leistungsminderung.

Siehe auch