使用LINQ从同一个表中查询值

时间:2017-07-05 04:54:19

标签: c# sql linq

我有一张这样的表:

+----+--------+----------+---------+-------------+
| ID | Codigo |  Nombre  | PadreID | CatalogosID |
+----+--------+----------+---------+-------------+
|  2 | KNW    | KENWORTH |       0 | MAR         |
|  3 | VLV    | VOLVO    |       0 | MAR         |
|  4 | T60    | T600     |       2 | MOD         |
|  5 | T68    | T680     |       2 | MOD         |
|  6 | T88    | T880     |       2 | MOD         |
|  7 | M43    | VNM 430  |       3 | MOD         |
+----+--------+----------+---------+-------------+ 

首先,我想得到一个我收到的参数列表,所以在LINQ中我做了类似的事情:

var cr = _pService.Listar().Where(x => x.CatalogosID == Catalogo)

假设Catalogo = MOD所以得到ID为4,5,6,7

的值

一旦我得到它们,我希望得到PadreID = ID的值,所以我应该只使用ID 2 and 3

作为finall结果接收值

如何使用LINQ执行此查询?有人可以帮助我吗?我认为这是一个自我加入,但加入LINQ非常混乱

1 个答案:

答案 0 :(得分:0)

如果CatalogosID不是“MOD”,您希望如何获取ID = 2且ID = 3的行?此外,没有PadreID = ID的任何行。请查看您的帖子和问题。

编辑
var idsWithMod = _p.service.Where(p => p.CatalogosID = Catalogo).Select(p => p.PadreID).ToList();
var result = _pservice.Where(p => idsWithMod.IndexOf(p.ID) != -1).ToList();我在两个问题中写了这篇文章以便更清楚。如果你愿意,你可以将它们组合起来。