gpt4 book ai didi

c# - 无法将类型 System.Collections.Generic.List 隐式转换为
转载 作者:太空宇宙 更新时间:2023-11-03 19:52:05 33 4
gpt4 key购买 nike

我有两个类 Employee 和 Territory:

public class Territory
{
public string TerritoryID { get; set; }
public string TerritoryDescription { get; set; }
public IEnumerable<Employee> Employees { get; set; }
}

我正在尝试使用 LINQ 按 TerritoryID 提取 Employees 并出现异常:

IEnumerable<Employee> empList = context.Territories
.Where(x => x.TerritoryID == territoryID)
.Select(y => y.Employees)
.ToList();

异常(exception)是:

Cannot implicitly convert type System.Collections.Generic.List<System.Collections.Generic.IEnumerable<Employee>> to System.Collections.Generic.IEnumerable<Employee>. An explicit conversion exists.

最佳答案

您需要使用SelectMany() 方法而不是Select()

您在这里使用 Select() 所做的是创建一个包含所有 Employees 集合的新 Enumerable。

SelectMany 展平所有“子”集合并将每个员工聚合到一个 Enumerable 中。


对于评论中描述的第二个问题,似乎 Employees 在表架构中或作为导航属性未知。

一个修复方法是在 SelectMany() 调用之前调用 ToList() 以确保执行 SQL 查询并且其余操作在内存中执行。

这是基于这个 SO Post

关于c# - 无法将类型 System.Collections.Generic.List<IEnumerable> 隐式转换为 <IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37729087/

33 4 0