J’ai un DataTable
avec une colonne Name
. Je veux générer une collection des noms uniques classés par ordre alphabétique. La requête suivante ignore la clause order by .
var names = (from DataRow dr in dataTable.Rows orderby (ssortingng)dr["Name"] select (ssortingng)dr["Name"]).Distinct();
Pourquoi l’ orderby
n’est- orderby
pas appliqué?
Pour le rendre plus lisible et maintenable, vous pouvez également le diviser en plusieurs instructions LINQ.
x1
, faites une projection si vous le souhaitez x1
à x2
, en utilisant la distinction requirejse x2
à x3
, en sortingant selon vos désirs Le problème est que l’opérateur Distinct n’accorde pas le maintien de l’ordre d’origine des valeurs.
Donc, votre requête devra fonctionner comme ceci
var names = (from DataRow dr in dataTable.Rows select (ssortingng)dr["Name"]).Distinct().OrderBy( name => name );
var sortedTable = (from results in resultTable.AsEnumerable() select (ssortingng)results[atsortingbuteList]).Distinct().OrderBy(name => name);
Essayez ce qui suit:
dataTable.Rows.Cast().select(dr => dr["Name"].ToSsortingng()).Distinct().OrderBy(name => name);
Essayez ce qui suit
var names = (from dr in dataTable.Rows select (ssortingng)dr["Name"]).Distinct().OrderBy(name => name);
cela devrait fonctionner pour ce dont vous avez besoin.
Pour résumer: toutes les réponses ont quelque chose en commun.
OrderBy doit être l’opération finale.
Vous pouvez utiliser quelque chose comme ça:
dataTable.Rows.Cast().GroupBy(g => g["Name"]).Select(s => s.First()).OrderBy(o => o["Name"]);