How do I get a distinct, ordered list of names from a DataTable using LINQ?
I have a DataTable
with a Name
column. I want to generate a collection of the unique names ordered alphabetically. The following query ignores the order by clause.
var names =
(from DataRow dr in dataTable.Rows
orderby (string)dr["Name"]
select (string)dr["Name"]).Distinct();
Why does the orderby
not get enforced?
To make it more readable and maintainable, you can also split it up into multiple LINQ statements.
x1
, do a projection if desired x1
into x2
, using whatever distinction you require x2
into x3
, sorting by whatever you desire 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 );
var sortedTable = (from results in resultTable.AsEnumerable()
select (string)results[attributeList]).Distinct().OrderBy(name => name);
链接地址: http://www.djcxy.com/p/51322.html
上一篇: 在C#中对IList进行排序