如何使用LINQ从DataTable中获得独特的有序名称列表?

我有一个NameDataTable 。 我想生成按字母顺序排列的唯一名称的集合。 以下查询忽略了order by子句。

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

为什么orderby没有得到执行?


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

  • 首先,将您的数据选择到一个新列表中,我们称之为x1 ,如果需要,进行投影
  • 接下来,使用您需要的任何区别创建一个不同的列表,从x1x2
  • 最后,创建一个有序的列表,从x2x3 ,按您的愿望进行排序

  • 问题在于Distinct运算符不会授予它将保持原始值的顺序。

    所以你的查询将需要这样工作

    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/51321.html

    上一篇: How do I get a distinct, ordered list of names from a DataTable using LINQ?

    下一篇: How do I remove duplicates from a C# array?