Condividi tramite


Convertire un ciclo foreach in LINQ

Questo refactoring si applica a:

  • C#

Che cosa: Consente di convertire facilmente il ciclo foreach che utilizza un IEnumerable in una query LINQ o in un modulo di chiamata LINQ (noto anche come metodo LINQ).

Quando: Si dispone di un ciclo foreach che utilizza un IEnumerable e si desidera che tale ciclo venga letto come query LINQ.

Perché: Si preferisce utilizzare la sintassi LINQ anziché un ciclo foreach. LINQ inserisce una query in un costrutto di linguaggio di prima classe in C#. LINQ consente di ridurre la quantità di codice in un file, di semplificare la lettura del codice e di consentire a origini dati diverse di avere modelli di espressione di query simili.

Annotazioni

La sintassi LINQ è in genere meno efficiente di un ciclo foreach. È bene essere consapevoli di eventuali compromessi in termini di prestazioni che potrebbero verificarsi quando si utilizza LINQ per migliorare la leggibilità del codice.

Convertire un ciclo foreach in refactoring LINQ

  1. Posiziona il foreach cursore sulla parola chiave.

    Esempio Foreach con IEnumerable

  2. Premere CTRL+per attivare il menu Azioni rapide e refactoring.

    Esempio di menu Converti in LINQ

  3. Selezionare Converti in LINQ o Converti in Linq (modulo di chiamata).

    Esempio di risultato della query LINQ

    Esempio di risultato del modulo di chiamata LINQ

Codice di esempio

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

Vedere anche