LINQ-如何使用子查询进行选择
我的数据是:LINQ-如何使用子查询进行选择,linq,Linq,我的数据是: +-----+--------+-----------+ | Id | Name | ParentId | +-----+--------+-----------+ | 1 | A | 0 | | 2 | B | 0 | | 3 | C | 1 | +-----+--------+-----------+ 如果LINQ的ParentId=0,我如何得到C?假设Categori
+-----+--------+-----------+
| Id | Name | ParentId |
+-----+--------+-----------+
| 1 | A | 0 |
| 2 | B | 0 |
| 3 | C | 1 |
+-----+--------+-----------+
如果LINQ的ParentId=0,我如何得到C?假设Categories是集合名,我想这就是您需要的
var parentCategoryIds = Collections.Where(c => c.ParentId == 0).Select(c => c.Id);
var results = Collections.Where(c => parentCategoryIds.Contains(c.ParentId));
如果你想知道名字,你可以
var names = results.Select(r => r.Name);
这三条语句可以写入一条linq语句,但我这样做是为了清晰。。其中x=>x.ParentId!=0? 见鬼,.Last将在您的示例集中起作用。您尝试了什么,但什么不起作用?我想使用子查询。因为.Wherex=>x.ParentId!=0不正常。如果我们有另一个parentId=2的记录,我们无法获取CTH,那么如何识别所需的记录?这里没有人能为你回答这个问题,这是你正在构建的系统的逻辑问题。一旦有了识别所需内容的方法,就有了一个筛选数据的子句。语句本身使用子查询听起来像是试图施法来获取所需数据。如果没有任何方法从逻辑上标识data.T-SQL是select*from Category where ParentId in select CateId from Category where ParentId=0,那么它就毫无意义。我想将其更改为LINQ您正在使用LINQ查询的集合是什么?数据表中的行?内存中对象的IEnumerable?LINQ到SQL?LINQ到实体?这些对象是否具有遵循此ParentId键关系的导航属性?如果他们没有,可以吗?