我有一个 DataTable和一个 Name柱。我想生成一个按字母顺序排列的唯一名称的集合。以下查询忽略 订购子句。
DataTable
Name
var names = (from DataRow dr in dataTable.Rows orderby (string)dr["Name"] select (string)dr["Name"]).Distinct();
为什么 orderby没有得到执行?
orderby
问题是 运算符不会授予它 维持... 的原有秩序 values.
因此,您的查询将需要像这样工作
var names = (from DataRow dr in dataTable.Rows select (string)dr["Name"]).Distinct().OrderBy( name => name );
试试以下方法
var names = (from dr in dataTable.Rows select (string)dr["Name"]).Distinct().OrderBy(name => name);
这应该能满足你的需求。
To make it more readable and maintainable, you can also split it up into multiple LINQ statements.
x1
x2
x3
var sortedTable = (from results in resultTable.AsEnumerable() select (string)results[attributeList]).Distinct().OrderBy(name => name);
试试以下方法:
dataTable.Rows.Cast<DataRow>().select(dr => dr["Name"].ToString()).Distinct().OrderBy(name => name);
抽象地说: 所有的答案都有一些共同点。
OrderBy 需要成为最后一个操作。
你可以使用这样的东西:
dataTable.Rows.Cast<DataRow>().GroupBy(g => g["Name"]).Select(s => s.First()).OrderBy(o => o["Name"]);