我有DataTable
一个Name
专栏.我想生成按字母顺序排列的唯一名称的集合.以下查询忽略order by子句.
var names =
(from DataRow dr in dataTable.Rows
orderby (string)dr["Name"]
select (string)dr["Name"]).Distinct();
Run Code Online (Sandbox Code Playgroud)
为什么不orderby
加强执行?
Bob*_*Bob 53
问题是,Distinct运算符不会授予它将保持原始值的顺序.
所以你的查询需要像这样工作
var names = (from DataRow dr in dataTable.Rows
select (string)dr["Name"]).Distinct().OrderBy( name => name );
Run Code Online (Sandbox Code Playgroud)
a7d*_*rew 34
为了使其更具可读性和可维护性,您还可以将其拆分为多个LINQ语句.
x1
,根据需要进行投影x1
进入x2
,使用自己需要的任何区别x2
进行x3
排序,按任意方式排序小智 9
var sortedTable = (from results in resultTable.AsEnumerable()
select (string)results[attributeList]).Distinct().OrderBy(name => name);
Run Code Online (Sandbox Code Playgroud)
小智 6
试试以下内容:
dataTable.Rows.Cast<DataRow>().select(dr => dr["Name"].ToString()).Distinct().OrderBy(name => name);
Run Code Online (Sandbox Code Playgroud)