Compartilhar via


Converter um loop foreach em LINQ

Essa refatoração se aplica a:

  • C#

Que: Permite converter facilmente o loop foreach que usa um IEnumerable em uma consulta LINQ ou em um formulário de chamada LINQ (também conhecido como método LINQ).

Quando: Você tem um loop foreach que usa um IEnumerable e deseja que esse loop seja lido como uma consulta LINQ.

Por que: Você prefere usar a sintaxe LINQ em vez de um loop foreach. O LINQ faz uma consulta em uma construção de linguagem de primeira classe em C#. O LINQ pode reduzir a quantidade de código em um arquivo, facilitar a leitura do código e permitir que diferentes fontes de dados tenham padrões de expressão de consulta semelhantes.

Observação

A sintaxe LINQ normalmente é menos eficiente do que um loop foreach. É bom estar ciente de qualquer compensação de desempenho que possa ocorrer quando você usa o LINQ para melhorar a legibilidade do seu código.

Converter um loop foreach em refatoração LINQ

  1. Coloque o foreach cursor na palavra-chave.

    Foreach usando a amostra IEnumerable

  2. Pressione Ctrl+. para acionar o menu Ações rápidas e refatoração .

    Exemplo de menu Converter em LINQ

  3. Selecione Converter em LINQ ou Converter em Linq (formulário de chamada).

    Exemplo de resultado de consulta LINQ

    Exemplo de resultado do formulário de chamada LINQ

Código de exemplo

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

Consulte também