2010-09-24 6 views
1

J'ai une date pouvant contenir 10 colonnes. Je veux en sélectionner seulement deux colonnes.Utilisation de la méthode d'extension SelectMany pour sélectionner plusieurs colonnes à partir de la liste DataRow avec résultat en tant que sous-ensemble de la liste de la base de données

Je ne suis pas capable de le faire en utilisant SelectMany Méthode d'extension.

Je sais comment l'obtenir de Linq To DataSet mais en essayant d'utiliser cette méthode d'extension.

+0

À tous: je l'ai eu de travailler après votre aide. Mais je m'attendais à ce que le résultat soit de type Liste mais il me donne un résultat de type dont le paramètre je passe n'importe quelle solution pour obtenir DataRow Back comme résultat. 'Var distinctItems = itemListToCreate.Select (dr => new {ItemId = dr.Field ("FK_ITEM_ID"), SessionId = dr.Field ("FK_SESSION_ID")}); ' –

+0

Pouvez-vous me dire comment réaliser ceci en linq, j'ai une table avec deux quelque 20 lignes, chaque fois que je dois sélectionner seulement 2 ou 3 lignes seulement par ID et la sortie devrait être seulement les lignes sélectionnées –

Répondre

5

La méthode SelectMany est utilisée pour aplatir une séquence de séquences, pas simplement pour sélectionner un sous-ensemble des colonnes disponibles. Utilisez la méthode Select à la place:

var query = yourDataTable.AsEnumerable() 
         .Select(r => new { Column3 = r[3], Column6 = r[6] }); 
2

SelectMany est la mauvaise méthode à essayer. Il vous suffit d'utiliser Select et créer un nouvel objet anonyme:

dataTable.AsEnumerable().Select(r => new { r.Column1, r.Column7 }); 

SelectMany est utilisé pour aplatir les collections imbriquées.

0

var s = table.Rows.Cast(). Sélectionnez (....);