替换foreach
循环
IList<EmployeeSearch> empItems = new List<EmployeeSearch>();
EmployeeSearch empItem = new EmployeeSearch();
foreach (var _emp in mediaResults.results)
{
empItem.Title = _emp.title;
empItem.Desc = _emp.description;
empItems.Add(empItem);
}
使用以下linq表达式并收到错误:
empItems = from _emp in employeeResults.results
select new EmployeeSearch
{
Title = _emp.title,
Desc = _emp.description
};
错误:
错误2无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.IList'。存在显式转换(您是
)
答案 0 :(得分:2)
您需要将其转换为List:
(from _emp in employeeResults.results
select new EmployeeSearch
{
Title = _emp.title,
Desc = _emp.description
}).ToList();
或者......更改您的empItems定义以使用var
隐式输入:
var empItems = from _emp in employeeResults.results
select new EmployeeSearch
{
Title = _emp.title,
Desc = _emp.description
};
empItems
将是IEnumerable
个EmployeeSearch
个对象。
答案 1 :(得分:1)
在查询结尾处添加对ToList
扩展程序方法的调用:
empItems =
(from _emp in employeeResults.results
select new EmployeeSearch
{
Title = _emp.title,
Desc = _emp.description
})
.ToList();
或者如果您可以重构代码以使用IEnumerable<T>
代替,那可能会更好:
IEnumerable<EmployeeSearch> empItems =
from _emp in employeeResults.results
select new EmployeeSearch
{
Title = _emp.title,
Desc = _emp.description
};
如果您只是遍历结果并且实际上不需要在结果集中添加/删除元素或者对结果具有每个索引的访问权限,则通常应该使用此方法。将查询结果转换为列表需要在内存中分配单个连续数组,这是一项相当昂贵的操作。