如何使用LINQ从数据表中获得不同的,有序的名称列表?

时间:2020-03-05 18:37:14  来源:igfitidea点击:

我有一个带有"名称"列的"数据表"。我想生成按字母顺序排列的唯一名称的集合。以下查询将忽略order by子句。

var names =
    (from DataRow dr in dataTable.Rows
    orderby (string)dr["Name"]
    select (string)dr["Name"]).Distinct();

为什么不执行orderby

解决方案:

问题是,不同
运营商不同意
保持原始顺序
价值观。

因此,查询将需要像这样工作

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