2010-07-21 5 views
0

J'ai créé un jeu de données fortement typé dans le concepteur de jeu de données. Le DataSet a une table appelée FocusOffsetsTable et cette table a quatre colonnes; SerialNumber, Filtre, Roue et Offset. J'utilise la méthode ReadXml() de la classe DataSet pour charger les données fortement typées à partir du fichier xml dans l'ensemble de données. Cela semble fonctionner très bien.LINQ to DataSet et xml help

J'essaye d'employer une expression de LINQ pour essayer d'obtenir une rangée simple de cette table mais je ne peux pas sembler obtenir la syntaxe correcte. Je veux utiliser la méthode Single() ou SingleOrDefault() pour obtenir une seule ligne de données à la fois, mais je ne sais pas comment.

J'ai essayé ce FocusOffsets.FocusOffsetsTableRow x = FocusOffsetData.FocusOffsetsTable. mais la méthode Single() n'est pas disponible ici. J'ai également essayé ceci ...

FocusOffsets.FocusOffsetsTableRow x = (from offset in FocusOffsetData.FocusOffsetsTable 
        where offset.SerialNumber == mydevice.SerialNumber 
        where offset.Wheel == WheelID 
        where offset.Filter == FilterNum 
        select offset).Single(); 

mais la méthode unique n'est pas disponible ici non plus.

Je l'ai déjà fait avec des tables dans une base de données SQL auparavant, mais c'est la première fois que j'utilise un jeu de données du concepteur de jeu de données.

Répondre

0

Avez-vous ajouté une instruction using pour System.Linq et inclus une référence à System.Data.DataSetExtensions. Je pense (mais je ne peux pas confirmer puisque je suis sur mon Mac), que vous devriez être capable de faire:

var x = FocusOffsetData.FocusOffsetsTable 
         .AsEnumerable() 
         .SingleOrDefault(o => o.SerialNumber == mydevice.SerialNumber 
               && o.Wheel = WheelID 
               && o.Filter = FilterNum);