How do I get a distinct, ordered list of names from a DataTable using LINQ?
Solution 1:
The problem is that the Distinct operator does not grant that it will maintain the original order of values.
So your query will need to work like this
var names = (from DataRow dr in dataTable.Rows
select (string)dr["Name"]).Distinct().OrderBy( name => name );
Solution 2:
To make it more readable and maintainable, you can also split it up into multiple LINQ statements.
- First, select your data into a new list, let's call it
x1
, do a projection if desired - Next, create a distinct list, from
x1
intox2
, using whatever distinction you require - Finally, create an ordered list, from
x2
intox3
, sorting by whatever you desire