我有一个由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.
有什么好的方法?