c# - 为什么 Generic Casting 不适用于这部分代码?

标签 c# .net generics

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”。存在显式转换(是否缺少强制转换?)

我正在实现这个接口(interface):

 IQueryable<T> FindAllBuckets<T>();

问题是什么?

这是我试过的:

  1. IQueryable<T> IS3Repository.FindAllBuckets<T>()
    {
        IQueryable<object> list = _repository
                                  .GetAllBuckets()
                                  .Cast<object>().AsQueryable();
    
        return list == null ? list.DefaultIfEmpty().AsQueryable() : list; }
    

最佳答案

您正在转换 listT但是FindAllBuckets的返回值类型为 IQueryable<T> .

取决于 _repository.GetAllBuckets() 的返回类型,这应该有效:

IQueryable<T> IS3Repository.FindAllBuckets<T>()
{
    return _repository.GetAllBuckets()
                      .Cast<T>()
                      .AsQueryable();
}

关于c# - 为什么 Generic Casting 不适用于这部分代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436385/

相关文章:

使用泛型参数的Java方法?

java: 当 SomeClass 实现 SomeInterface 时从 List<SomeClass> 转换为 List<SomeInterface>

C# 代码分析不喜欢 protected 静态 s_Foo(CA1709、CA1707)

generics - 将 Swift 事物与 NSObject 实例相关联

c# - 如何覆盖richtextbox中的复制和粘贴

c# - String.Format(...) 中的装箱和拆箱......以下合理化了吗?

.net - app.config 中的 ConnectionStrings 带有 .config 文件不喜欢的字符

.net - 提供异步编程模型 : Should I?,如果是,应该是 VerbAsync() 还是 BeginVerb()?

c# - 如何让 Entity Framework 5 更新陈旧数据

java - ASP.NET Web API 中是否有 @JsonView 等价物