Partager via


Convertir une boucle foreach en LINQ

Ce refactoring s’applique à :

  • C#

Quoi: Vous permet de convertir facilement votre boucle foreach qui utilise un IEnumerable en une requête LINQ ou un formulaire d’appel LINQ (également appelé méthode LINQ).

Quand: Vous disposez d’une boucle foreach qui utilise un IEnumerable et vous souhaitez que cette boucle soit lue en tant que requête LINQ.

Pourquoi: Vous préférez utiliser la syntaxe LINQ plutôt qu’une boucle foreach. LINQ transforme une requête en une construction de langage de première classe en C#. LINQ peut réduire la quantité de code dans un fichier, faciliter la lecture du code et permettre à différentes sources de données d’avoir des modèles d’expression de requête similaires.

Remarque

La syntaxe LINQ est généralement moins efficace qu’une boucle foreach. Il est bon d’être conscient de tout compromis de performances qui peut se produire lorsque vous utilisez LINQ pour améliorer la lisibilité de votre code.

Convertir une boucle foreach en refactorisation LINQ

  1. Placez votre curseur dans le mot-clé foreach .

    Foreach à l’aide de l’exemple IEnumerable

  2. Appuyez sur Ctrl+pour lancer le menu Actions rapides et refactorisations.

    Exemple de conversion en menu LINQ

  3. Sélectionnez Convertir en LINQ ou Convertir en Linq (formulaire d’appel).

    Exemple de résultat de requête LINQ

    Exemple de résultat de formulaire d’appel LINQ

Exemple de code

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

Voir aussi