【发布时间】:2015-07-17 15:40:55
【问题描述】:
我正在尝试使用 linq 从更大的列表中创建子列表
List<ScenarioDetailModel> chartScenarioDetailsList = new List<ScenarioDetailModel>();
List<ScenarioDetailModel> subList = new List<ScenarioDetailModel>();
subList = chartScenarioDetailsList.Where(s => s.Code == "C3");
chartScenarioDetailsList和subList都是同一个类型但是编译器报错类型转换不能编译,错误如下:
错误 190 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换(您是否缺少演员表?)
但是,当我将子列表的类型从 List 更改为 IEnumerable 时,它会编译:
IEnumerable<ScenarioDetailModel> subList = new List<ScenarioDetailModel>();
subList = chartScenarioDetailsList.Where(s => s.Code == "C3");
我的问题是:为什么会这样?
【问题讨论】:
-
尝试在 where 语句的末尾添加
.ToList()。因为它返回一个可枚举的,而不是一个列表 -
另一个问题是:你真的需要一个列表还是可以使用一个可枚举的? apply ToList() 意味着创建一个新对象并引用另一个对象的元素。
标签: c# linq ienumerable