首页 > 解决方案 > C#从数据库中检索传递数据

问题描述

相对较新的程序员在这里试图解决一个可能让我有点头疼的任务。

我正在尝试创建一个方法来返回一个项目的所有传递关系。具体来说,我有一个简单的表,其中包含可能彼此直接或间接相关的项目:

ID | Item# | RelativeItem#
--------------------------
0  | Item1 | Item2
1  | Item2 | Item3
2  | Item4 | Item1
3  | Item5 | Item6
4  | Item7 | Item8
5  | Item8 | Item9
6  | Item10| Item6
7  | Item12| Item11    

示例 1:搜索 Item1 应返回 Item2(直接相关)、Item3(间接相关)和 Item4(间接相关)

示例 2:搜索 Item10 应返回 Item5、Item6、Item7。第 8 项和第 9 项

示例 3:搜索 Item11 应返回 Item12

我最初的想法是利用递归 CTE 并返回结果,但我很快意识到,不仅没有办法将其转换为 Linq 查询,而且每次项目需要时运行这样的查询也不理想被搜索。有哪些选项可以有效地查询表和检索相关项目?

提前致谢!

标签: c#sql-server

解决方案


递归 CTE 是最有效的选择。如果需要通过 linq 查询,可以将其放在 VIEW 中。


推荐阅读