C# SelectMany()无法推断类型参数--为什么不能?
我有一张C# SelectMany()无法推断类型参数--为什么不能?,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一张Employee表和一张Office表。通过EmployeeOffices表以多对多的关系连接这些办公室 我想获得一个特定员工(CurrentEmployee)所关联的所有办公室的列表 我想我可以这样做: foreach (var office in CurrentEmployee.EmployeeOffices.SelectMany(eo => eo.Office)) ; 但这给了我一个错误: 无法从用法推断方法“System.Linq.Enumerable.Selec
Employee
表和一张Office
表。通过EmployeeOffices
表以多对多的关系连接这些办公室
我想获得一个特定员工(CurrentEmployee
)所关联的所有办公室的列表
我想我可以这样做:
foreach (var office in CurrentEmployee.EmployeeOffices.SelectMany(eo => eo.Office))
;
但这给了我一个错误:
无法从用法推断方法“System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable,System.Func>)”的类型参数。尝试显式指定类型参数
我知道我可以添加类型参数。但Intellisense认识到,
eo.Office
属于Office类型。那么为什么编译器不清楚这一点呢?传递给SelectMany
的委托返回的类型必须是IEnumerable
,但显然,Office
没有实现该接口。看起来您只是混淆了简单的Select
方法的SelectMany
- 用于将多个集合展平为一个新集合
- 用于将源集中的每个元素一对一映射到新的集合
foreach (var office in CurrentEmployee.EmployeeOffices.Select(eo => eo.Office))
不要!你说得对。
员工办公室
办公室
是一对一的关系。我对多对多的关系感到困惑。谢谢