ASP和EF Core 3.1在集合中查找链接项的有效方法(直接和间接链接)

时间:2020-05-14 09:39:36

标签: asp.net-core-3.1 ef-core-3.1

我有一个由ID链接的项目的集合。仅当主项目及其子项目之间存在链接时,项目才在列表中。

=====================
|LinksTo  | MasterId |
======================
|  2      |    1     |
|  3      |    1     |
|  4      |    1     |
======================

当我查看项目1时,很容易,因为它直接链接到所有其他项目。 但是,项目3仅通过项目1链接到其他项目。

目前,我有一种非常糟糕的方法,可以确定ID是否在列表中。 如果不是主服务器,则获取主服务器和所有链接的项目。 我退回要求的物品,并显示任何直接或间接链接。 基本上,构成更大整体的项目。

我的可怕尝试是通过一些条件检查来实现的

//Find out if there is a master and what the Id is
IQueryable<LinkedItems> query = _context.LinkedItems;
query = query.Where(x => x.MasterId == id || x.LinksTo == id);
var masterId = await query.Select(x => x.MasterId).FirstOrDefaultAsync();

//Find the collection of items linked to the mater
IQueryable<LinkedItems> items = _context.LinkedItems.Where(x => x.MasterId == master);
var result = await items.ToListAsync(); //My collection to display minus Id of shown item.

有什么好的方法?

0 个答案:

没有答案