Kader Yildirim
LINQ à 360 degré, Partie 3
Cet article présente les principales fonctionnalités apportées par LINQ to DataSet
Par Kader Yildirim publié le 01/07/2007 à 20:47, lu 3656 fois, 6 pages
 2 | Présentation de LINQ to DataSet
Dans les versions pré-CTP de mars, LINQ to DataSet avait ajouté les opérateurs suivants en plus des opérateurs standards de LINQ :
  1. DistinctRows
  2. EqualAllRows
  3. UnionRows
  4. IntersectRows
  5. ExceptRows
On peut se demander pourquoi avoir ajouté ces méthodes alors que les opérateurs LINQ Distinct, EqualAll, Union, Intersect et Except existent déjà. Alors que ces opérateurs s'appuient sur l'égalité par référence, les opérateurs ajoutés se basaient sur la comparaison champ à champ pour gérer les égalités entre DataRow.

Dans la version du CTP de Mars EqualAll est remplacé par SequenceEqual et tous les opérateurs spécifiques ont laissé la place aux opérateurs standards de LINQ qui prennent maintenant un paramètre supplémentaire (facultatif) de type IEqualityComparer<T>. L'assembly System.Data.Entity.dll propose une classe DataRowComparer qui implémente déjà cette interface pour les DataRow.

Ces opérateurs sont non seulement valables pour un DataSet mais aussi pour une DataTable. Toutefois, comme les requêtes LINQ ne s'appliquent que sur des types implémentant IEnumerable<T> et que la classe DataTable n'implémente pas cette dernière, il faut alors appeler la méthode AsEnumerable() de cette classe afin la rendre accessible par LINQ :

[SerializableAttribute]

       public ref class DataTable : public MarshalByValueComponent, IListSource,

                                           ISupportInitializeNotification, ISupportInitialize,

                                           ISerializable, IXmlSerializable

 
» Démarrer une discussion
 
Discussion démarée par Matthieu Mezil le 02/07/2007 à 16:38, 2 commentaire(s).