我有三个表,用户、产品和说明。用户和产品之间存在多对多关系,产品和指令之间存在多对多关系。
我需要获取允许特定用户查看的所有说明,即连接到用户的每个产品的每个说明。
我想使用方法语法并利用导航属性来避免连接。因此,首先我为用户获取产品,然后在说明中进行选择,如下所示:
Products.Where(product => product.User.Any(user => user.ID == id))
.Select(product => product.Instructions).ToList();
但是,这不会返回 aList<Instruction>
而是 a List<IEnumerable<Instruction>>
,因此会引发编译器错误“无法隐式转换类型 ...”。
我也试过:
Products.Where(product => product.User
.Contains(User.Where(user => user.ID == id).First()))
.Select(product => product.Instructions).ToList();
但我得到了同样的结果。即使没有 where 子句,我也会得到相同的结果
Products.Select(product => product.Instructions).ToList();
谁能告诉我我做错了什么?不应该选择创建相关条目的列表而不是列表的列表,这是非常没用的吗?