Udostępnij za pośrednictwem


Konwertowanie pętli foreach na LINQ

Ta refaktoryzacja dotyczy następujących elementów:

  • C#

Co: Umożliwia łatwe konwertowanie pętli foreach , która używa IEnumerable na zapytanie LINQ lub formularz wywołania LINQ (znany również jako metoda LINQ).

Kiedy: Masz pętlę foreach, która używa IEnumerable i chcesz, aby ta pętla odczytywała jako zapytanie LINQ.

Dlaczego: Wolisz używać składni LINQ, a nie pętli foreach. LINQ tworzy zapytanie w konstrukcji języka pierwszej klasy w języku C#. LINQ może zmniejszyć ilość kodu w pliku, ułatwić odczytywanie kodu i umożliwić różnym źródłom danych posiadanie podobnych wzorców wyrażeń zapytań.

Uwaga

Składnia LINQ jest zwykle mniej wydajna niż pętla foreach. Warto zdawać sobie sprawę z wszelkich kompromisów w zakresie wydajności, które mogą wystąpić podczas korzystania z LINQ w celu poprawy czytelności kodu.

Konwertowanie pętli foreach na refaktoryzację LINQ

  1. Umieść kursor w słowie foreach kluczowym.

    Foreach przy użyciu przykładu IEnumerable

  2. Naciśnij Ctrl+., aby wyzwolić menu Szybkie akcje i refaktoryzacje.

    Przykład konwertowania na przykładowe menu LINQ

  3. Wybierz pozycję Konwertuj na LINQ lub Konwertuj na Linq (formularz wywołania).

    Przykładowy wynik zapytania LINQ

    Przykładowy wynik formularza wywołania LINQ

Przykładowy kod

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

Zobacz też