我想将一个项目列表从一个对象强制转换为另一个对象,如下所示:
public async Task<IEnumerable<TaskDetailsEntity>> GetTaskDetails(int personnelSK)
{
/*
IEnumerable<TaskDetailsEntity> TaskDetailsEntitiesList =
await GetKTaskDetails(personnelSK).Select(
a => (KTaskDetailsEntity)a).ToList();
*/
IEnumerable<TaskDetailsEntity> TaskDetailsEntitiesList =
await GetKTaskDetails(personnelSK).Cast<KTaskDetailsEntity>().ToList();
return TaskDetailsEntitiesList;
}
public async Task<IEnumerable<KTaskDetailsEntity>> GetKTaskDetails(int personnelSK)
{
List<ParameterInfo> parameters = new List<ParameterInfo>();
if (personnelSK != 0)
{
parameters.Add(new ParameterInfo(){
ParameterName = "@PI_PERSONNEL_SK"
, ParameterValue = personnelSK });
}
IEnumerable<KTaskDetailsEntity> KTaskDetailsEntitiesList =
await _SQLHelper.GetRecords<KTaskDetailsEntity>(
"[xx].[GET_TASK_DATA]"
, parameters);
return KTaskDetailsEntitiesList;
}
但是有了这个,我在第一个方法中得到了低于错误的值:
'Task<IEnumerable<KTaskDetailsEntity>>'
不包含'Cast'的定义,并且无法找到接受'Task<IEnumerable<KTaskDetailsEntity>>'
类型的第一个参数的可访问扩展方法'Cast'(您是否缺少using指令或程序集引用?)
用括号括起你的await
-ed结果:
public async Task<IEnumerable<TaskDetailsEntity>> GetTaskDetails(int personnelSK)
{
//IEnumerable<TaskDetailsEntity> TaskDetailsEntitiesList = await GetKTaskDetails(personnelSK).Select(a => (KTaskDetailsEntity)a).ToList();
IEnumerable<TaskDetailsEntity> TaskDetailsEntitiesList = (await GetKTaskDetails(personnelSK)).Cast<TaskDetailsEntity>().ToList();
return TaskDetailsEntitiesList;
}
实际上,由于IEnumerable<T>
协方差,这里不需要Cast<>
调用,所以,最后一个是:
public async Task<IEnumerable<TaskDetailsEntity>>GetTaskDetails(int personnelSK)
{
return (await GetKTaskDetails(personnelSK)).ToList();
}