Teilen über


Konvertieren einer foreach-Schleife in LINQ

Dieses Refactoring gilt für:

  • C#

Was: Ermöglicht das einfache Konvertieren der foreach-Schleife , die IEnumerable verwendet, in eine LINQ-Abfrage oder ein LINQ-Aufrufformular (auch als LINQ-Methode bezeichnet).

Wann: Sie verfügen über eine foreach-Schleife, die IEnumerable verwendet, und Sie möchten, dass diese Schleife als LINQ-Abfrage gelesen wird.

Warum: Sie bevorzugen die Verwendung der LINQ-Syntax anstelle einer foreach-Schleife. LINQ verwandelt eine Abfrage in ein erstklassiges Sprachkonstrukt in C#. LINQ kann die Menge an Code in einer Datei reduzieren, den Code leichter lesbar machen und zulassen, dass verschiedene Datenquellen ähnliche Abfrageausdrucksmuster aufweisen.

Hinweis

Die LINQ-Syntax ist in der Regel weniger effizient als eine foreach-Schleife. Es ist gut, sich über Leistungseinbußen im Klaren zu sein, die auftreten können, wenn Sie LINQ verwenden, um die Lesbarkeit Ihres Codes zu verbessern.

Konvertieren einer foreach-Schleife in LINQ-Umgestaltung

  1. Platzieren Sie den Cursor in dem foreach Schlüsselwort.

    Foreach mit IEnumerable-Beispiel

  2. Drücken Sie die Strg-Taste+, um das Menü Schnellaktionen und Refactorings aufzurufen.

    Beispiel für ein Konvertieren in ein LINQ-Menü

  3. Wählen Sie In LINQ konvertieren oder In Linq konvertieren (Aufrufformular) aus.

    Beispiel für ein LINQ-Abfrageergebnis

    Ergebnisbeispiel für das LINQ-Aufrufformular

Beispielcode

using System.Collections.Generic;

public class Class1
{
    public void MyMethod()
    {
        var greetings = new List<string>()
            { "hi", "yo", "hello", "howdy" };

        IEnumerable<string> enumerable()
        {
            foreach (var greet in greetings)
            {
                if (greet.Length < 3)
                {
                    yield return greet;
                }
            }

            yield break;
        }
    }
}

Siehe auch