解决方案:

原因是 Distinct不保证维持原来的数据顺序。

因此,查询应该像下面这样才有用

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);

为了使其更具可读性和可维护性,我们还可以将其拆分为多个LINQ语句。

首先,将数据选择到一个新列表中,我们将其命名为" x1",并根据需要进行投影。接下来,根据要求,从" x1"到" x2"创建一个不同的列表。最后,创建一个有序列表,从x2x3,按我们想要的顺序排序

var sortedTable = (from results in resultTable.AsEnumerable()
select (string)results[attributeList]).Distinct().OrderBy(name => name);
使用LINQ时,如何从数据表中获得唯一的排序列表

"数据表DataTable" 有一列name。 如何获取根据name排序的集合。

下面的查询,order by无效

var names =
    (from DataRow dr in dataTable.Rows
    orderby (string)dr["Name"]
    select (string)dr["Name"]).Distinct();
日期:2020-03-23 14:22:49 来源:oir作者:oir