Linq给ADO.NET父/子查询求助

时间:2009-11-20 07:10:08

标签: c# linq ado.net relationship

我想使用Linq to ADO.NET从DataTable中获取符合以下条件的所有行。

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

有人可以告诉我如何实现这一点(最好使用查询语法和方法语法),并可能指出我可以阅读更多有关此主题的内容吗?

1 个答案:

答案 0 :(得分:1)

没有“Linq to ADO.NET”(也许你对ADO.NET实体框架感到困惑)。在您的情况下,您似乎指的是Linq to DataSet

你可以这样做:

查询语法:

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