Datatable LINQ select datarow 只返回一行以及如何排序

Posted

技术标签:

【中文标题】Datatable LINQ select datarow 只返回一行以及如何排序【英文标题】:Datatable LINQ select datarow only returning one row and how to order 【发布时间】:2014-07-16 15:27:41 【问题描述】:

我有一个包含 4 列的数据表

- A|1|苹果|萝卜 - A|2|水|水果 - B|1|水|橙 - B|2|水|芒果 - C|1|你好|世界

我想要做的是选择不同的 A 列。然后我想根据 A 列选择不同的列 2、3、4。

这就是我用来选择不同列 A 的方法。我对第一部分的问题是如何按列 A (linkControl) 排序。成员是我的数据表,这将返回每个不同的列 a

    var linkControl = Member.AsEnumerable()
                            .Select(row => new
                            
                                linkCon = row.Field<string>("LinkControl")
                            )
                            .Distinct();

然后因为我想迭代每个 linkCon,我执行以下操作,即使每个 linkCon 大约有 20 个数据行,它也只返回一个数据行。如何返回所有行?

 foreach (var linkC in linkControl)
    
var linkControllink = (from DataRow dr in ADMemberships.Rows
                               where dr["LinkControl"] == linkC.linkCon
                               orderby (string)dr["URLDescription"]
                               select dr);




        foreach (var lcl in linkControllink)
        
                //only has one row in it
         

【问题讨论】:

【参考方案1】:

我不得不将代码更改为where dr["LinkControl"].ToString() == linkC.linkCon.ToString(),我真的不明白为什么。

【讨论】:

以上是关于Datatable LINQ select datarow 只返回一行以及如何排序的主要内容,如果未能解决你的问题,请参考以下文章

动态 Linq 查询 - 如何构建 select 子句?

c# datatable select问题

C# DataTable.Select()根据条件筛选数据

C# DataTable.Select()根据条件筛选数据

C# DataTable.Select()根据条件筛选数据

关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧