我试图使用Linq来获取一个对象列表。每个对象的一部分都是一个潜在的相同类型的子对象列表,如果没有列表,那么它就是空的。我试图弄清楚如何让这个二级列表与我的每个主对象一起返回。
这是我的主要类别。在一个特定位置可能有一个以上的显示器,而我希望能够看到并链接回共用该位置的其他显示器。如果它是唯一的显示器,则我将Group设为null,因此不会为单一显示器建立群组。
public class Display
{
public int DisplayId { get; set; }
public string DisplayName { get; set; } = null!;
public int? DisplayGroupId { get; set; }
//Displays At Same Location
public DisplayGroup? DisplayGroup { get; set; }
}
这是我的中间表格,用来显示哪些显示器位于同一位置。
public class DisplayGroup
{
public int DisplayGroupId { get; set; }
public List<Display> Displays { get; set; } = null!;
}
下面是一个我认为是最好的例子,它说明了我试图获取列表的过程。不幸的是,当我运行这个过程时,我得到了一个异常'System.InvalidOperationException' in System.Private.CoreLib.dll
List<Display> list = await _context.Displays.AsNoTracking()
.Include(x => x.DisplayGroup)
.ThenInclude(x => x.Displays)
.ToListAsync();
return list;
在阅读了各种地方,包括StackOverflow,我还没有能够得到一个答案,实际上返回我正在寻找的。
对不起,如果我没有提供所有需要帮助解决我的问题,这是我第一次问。如果需要更多的信息,我可以回邮。
预先感谢你的帮助。
我希望得到的结果是这样的:
| 显示器|在同一位置显示|
| - ------| - ------|
| 显示器A|显示B/显示C/显示E|
| 显示器B|显示A/显示C/显示E|
| 显示器C|显示A/显示B/显示E|
| 显示器D|不适用|
| 显示E|显示A/显示B/显示C|
| 显示F|显示G|
| 显示G|显示F|
在这里我可以点击上面任何一个显示名称,转到与它们相关的页面。
1条答案
按热度按时间8ftvxx2r1#
我不太清楚你所说的“点击”等是什么意思,但这个答案应该能解决我认为你试图阐明的问题。
假设您有一个
Display
对象的平面列表,对于任何特定对象,您希望获取同一组中所有其他Display
对象的列表。