2009-11-20 59 views
0

我想使用Linq到ADO.NET从DataTable中获取符合以下条件的所有行。Linq到ADO.NET父/子查询帮助

  • 选择“parentId”等于“parentId”等于null的行的“id”的所有行。
  • 按“名称”排序。

有人能告诉我如何做到这一点(最好同时使用查询语法和方法语法),并可能指向我在哪里可以阅读更多关于此主题?

回答

1

没有“Linq to ADO.NET”这样的东西(也许你对ADO.NET实体框架感到困惑)。在你的情况,你似乎是指LINQ到数据集

你可以做这样的事情:

查询语法:

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; 

方法的语法:

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