Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ-如何使用子查询进行选择_Linq - Fatal编程技术网

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键关系的导航属性?如果他们没有,可以吗?