[英]Why Generic Casting is not working on this section of code?
IQueryable<T> IS3Repository.FindAllBuckets<T>()
{
IQueryable<object> list = _repository.GetAllBuckets().Cast<object>().AsQueryable();
return list == null ? default(T) : (T)list;
}
这是错误:错误3无法将类型'T'隐式转换为'System.Linq.IQueryable'。 存在显式转换(您是否缺少演员表?)
我正在实现此接口:
IQueryable<T> FindAllBuckets<T>();
问题是什么?
这是我尝试过的:
IQueryable<T> IS3Repository.FindAllBuckets<T>() { IQueryable<object> list = _repository .GetAllBuckets() .Cast<object>().AsQueryable(); return list == null ? list.DefaultIfEmpty().AsQueryable() : list; }
您正在将list
强制转换为T
但是FindAllBuckets
的返回值类型为IQueryable<T>
。
根据_repository.GetAllBuckets()
的返回类型,这应该可以工作:
IQueryable<T> IS3Repository.FindAllBuckets<T>()
{
return _repository.GetAllBuckets()
.Cast<T>()
.AsQueryable();
}
尝试这个:
IQueryable<T> IS3Repository.FindAllBuckets<T>()
{
IQueryable<T> list = _repository
.GetAllBuckets()
.Cast<T>()
.AsQueryable();
return list ?? new List<T>().AsQueryable();
}
原始方法的主要问题是您试图返回T
的实例,而不是IQueryable<T>
的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.