简体   繁体   English

Linq to ADO.NET父/子查询帮助

[英]Linq to ADO.NET parent/child query help

I want to use Linq to ADO.NET to fetch all rows that match the criteria below from a DataTable. 我想对ADO.NET使用Linq从数据表中获取与以下条件匹配的所有行。

  • Select all rows where "parentId" equals "id" of a row where "parentId" equals null. 选择“ parentId”等于“ null”的所有行。
  • Order by "Name". 按“名称”排序。

Can someone tell me how to accomplish this (preferably using both Query Syntax and Method Syntax), and possibly point me to where I can read more about this topic? 有人可以告诉我如何完成此操作(最好同时使用查询语法和方法语法),并可能指出我可以在其中阅读更多有关此主题的信息吗?

There is no such thing as "Linq to ADO.NET" (perhaps you're confusing with ADO.NET Entity Framework). 没有“ Linq to ADO.NET”之类的东西(也许您对ADO.NET实体框架感到困惑)。 In your case, you seem to be referring to Linq to DataSets 就您而言,您似乎是在将Linq指向DataSets

You could do something like that : 你可以做这样的事情:

Query syntax : 查询语法:

var parents = from row in table.AsEnumerable()
              where row.IsNull("parentId")
              select parents;

var children = from row in table.AsEnumerable()
               where parents.Any(p => p.Field<int>("id") = row.Field<int>("parentId"))
               orderby row.Field<string>("Name")
               select row;

Method syntax : 方法语法:

var parents = table.AsEnumerable()
              .Where(row => row.IsNull("parentId"));

var children = table.AsEnumerable()
               .Where(row => parents.Any(p => p.Field<int>("id") = row.Field<int>("parentId")))
               .OrderBy(row => row.Field<string>("Name"));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM