115 votes

Comment obtenir une liste distincte et ordonnée de noms à partir d'une table de données en utilisant LINQ ?

J'ai un DataTable avec un Name colonne. Je veux générer une collection de noms uniques classés par ordre alphabétique. La requête suivante ignore la colonne commande par clause.

var names =
    (from DataRow dr in dataTable.Rows
    orderby (string)dr["Name"]
    select (string)dr["Name"]).Distinct();

Pourquoi le orderby ne sont pas appliquées ?

2voto

Philip Raath Points 314

Pour résumer : toutes les réponses ont quelque chose en commun.

OrderBy doit être l'opération finale.

2voto

Presto Points 474

Vous pouvez utiliser quelque chose comme ça :

dataTable.Rows.Cast<DataRow>().GroupBy(g => g["Name"]).Select(s => s.First()).OrderBy(o => o["Name"]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X