我有一张这样的表:
+----+--------+----------+---------+-------------+
| 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
如何使用LINQ执行此查询?有人可以帮助我吗?我认为这是一个自我加入,但加入LINQ非常混乱
答案 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();
我在两个问题中写了这篇文章以便更清楚。如果你愿意,你可以将它们组合起来。