2014-10-07 63 views
-3

我的数据选择是:LINQ - 如何使用子查询

+-----+--------+-----------+ 
| Id | Name | ParentId | 
+-----+--------+-----------+  
| 1 | A |  0  | 
| 2 | B |  0  | 
| 3 | C |  1  | 
+-----+--------+-----------+ 

如何获得C如果我们通过LINQ ParentId = 0

+3

'.Where(x => x.ParentId!= 0)'?嘿,'.Last()'可以在你的样本集中工作。你有什么尝试,什么不工作? – David 2014-10-07 17:57:32

+0

我想使用子查询。因为.Where(x => x.ParentId!= 0)不正确。如果我们有parentId = 2的另一个记录,我们不能得到C – 2014-10-07 18:08:27

+0

那么您如何识别您想要的记录?这里没有人可以为你回答这个问题,这是你正在构建的系统的逻辑问题。一旦你有手段来确定你在找什么,你有一个条款来过滤数据。声明“使用子查询”本身听起来像是试图施展咒语来获取所需的数据。没有任何方法从逻辑上识别数据是没有意义的。 – David 2014-10-07 18:11:25

回答

0

假设“类别”是集合名称,我认为这是你所需要的。

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语句,但我这样做是为了便于说明。