LINQ en C#

Dans un dernier article on a regardé la fonctionnalité des expressions lambda, donc les fonctionnes anonymes. Autrefois j’ai écrit un article sur le sujet méthodes d’extension, qui va nous donner une base de savoir-faire en plus, dans cet article autour de LINQ.

MSDN propose également un bon réseau d’informations autour de LINQ.

Mais tout d’abord c’est quoi LINQ ?

LINQ c’est un acronyme pour Language Integrated Query. Simplifié on pourrait dire que LINQ est une bibliothèque de classes, qui nous donne des méthodes d’extension pour l’interface IEnumerable. Cette bibliothèque est donc disponible dans toutes les classes qui implémentent cette interface. Par exemple List<T>, Array, ObservableCollection<T>. Grâce à LINQ les queries sur les Collections en C# sont plus facile.

En gros, il y a 4 bibliothèques différentes :

  • LINQ to Object : query Arrays et Collections
  • LINQ to DataSet : query DataTables dans les DataSets
  • LINQ to XML : query XML Documents
  • LINQ to SQL : query SQL ServerPour obtenir plus d’information sur LINQ on peut également consulter MSDN.

LINQ propose deux notations différentes :

  • Query syntax
  • Method syntax

La query syntax ressemble beaucoup à un statement SQL. Un exemple se trouve dans le codage au dessous.

Maintenant regardons nous le method syntax d’une méthode LINQ très importante :

System.Linq.Enumerable.Where<TSource>
(this System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)

Ici on voit qu’il y a deux paramètres. Le premier paramètre comporte le mot clé this. Selon le mot clé this on voit facilement, qu’il s’agît d’une méthode d’extension, qui se réfère au type IEnumerable<T>. Le deuxième paramètre est une méthode (delegate) qui retourne une valeur boolean. Voici un exemple concret :

namespace LINQ
{
    class Program
    {
        static void Main(string[] args)
        {
            var animaux = new string[]{ "Caribou", "Ours", "Castor", "Baleine", "Beluga" };

            // Query syntax
            //var query = from a in animaux
            //            where a.StartsWith("B")
            //            select a;

            // Method syntax
            var query = animaux.Where(a => a.StartsWith("B"));

            foreach (var x in query)
            {
                Console.WriteLine(x);
            }

            Console.ReadKey();
        }
    }
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *