30mar. 2009

CSharp 3 : Utiliser une clause Join entre deux collections

L'un des apports majeurs de la librairie Linq est la possibilité de faire des requetes sur les collections. Voici Quelques exemples d'utilisation de Linq avec des collections.

La syntaxe de base d'un join entre deux collection en Linq est :

from e1 in Enum1
join e2 in Enum2 on e1.X equal e2.X
select new {e1.X, e1.Y, e1.A, e2.B}

La syntaxe d'un equals sur un couple de valeur est :

from e1 in enumerable1
join e2 in enumerable2 
     on new { e1.X, e1.Y } equals new { e2.X, e2.Y }
select new {e1.X, e1.Y, e1.A, e2.B}

La syntaxe pour faire un join sur des valeurs d'une énumération et celle d'une collection d'objets :

from propName in xmlAttrValue.Keys
join cPropName in (from cSubPropName in myClass.Datas
    select new { Truman = cSubPropName.Name } ) 
    on propName equals cPropName.Truman
    select propName;

On doit ici créer un type anonyme pour pouvoir faire l'égalisation entre les deux collections.

Sources

aucun commentaire

Fil des commentaires de ce billet

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.