Compartir a través de


Conversión de un bucle foreach en LINQ

Esta refactorización se aplica a:

  • C#

Qué: Permite convertir fácilmente el bucle foreach que usa un IEnumerable en una consulta LINQ o un formulario de llamada LINQ (también conocido como método LINQ).

Cuando: Tiene un bucle foreach que usa un IEnumerable y desea que ese bucle se lea como una consulta LINQ.

Por qué: Es preferible usar la sintaxis LINQ en lugar de un bucle foreach. LINQ convierte una consulta en una construcción de lenguaje de primera clase en C#. LINQ puede reducir la cantidad de código de un archivo, facilitar la lectura del código y permitir que diferentes orígenes de datos tengan patrones de expresión de consulta similares.

Nota:

La sintaxis de LINQ suele ser menos eficaz que la de un bucle foreach. Es bueno tener en cuenta cualquier compensación de rendimiento que pueda producirse al usar LINQ para mejorar la legibilidad del código.

Conversión de un bucle foreach en refactorización LINQ

  1. Coloque el cursor en la foreach palabra clave.

    Ejemplo Foreach using IEnumerable

  2. Presione Ctrl+ para activar el menú Acciones rápidas y refactorizaciones.

    Ejemplo de menú Convertir a LINQ

  3. Seleccione Convertir a LINQ o Convertir a Linq (formulario de llamada).

    Ejemplo de resultados de consultas LINQ

    Ejemplo de resultados de formulario de llamada LINQ

Código de ejemplo

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 también