2009-09-17 5 views
2
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>(); 

문제가 무엇입니까 : 명시 적 변환 (? 당신이 캐스트를 누락)

나는이 인터페이스를 구현하고있는?

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

답변

1

list에서 T으로 캐스팅하고 있지만 FindAllBuckets의 반환 값은 IQueryable<T>입니다.

_repository.GetAllBuckets()의 리턴 타입에 따라이 작업을해야합니다 :

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

고마워요. 아는 것이 힘이다!!! – Geo

0

이 시도 :

내가 시도 무엇

IQueryable<T> IS3Repository.FindAllBuckets<T>() 
{ 
    IQueryable<T> list = _repository 
         .GetAllBuckets() 
         .Cast<T>() 
         .AsQueryable(); 

    return list ?? new List<T>().AsQueryable(); 
} 

원래의 접근 방식의 가장 큰 문제는 인스턴스를 반환하려고했던 것입니다 IQueryable<T>이 아닌 T 인 경우

+0

연산자 '??' 형식 'System.Linq.IQueryable '및 'System.Linq.IQueryable '의 피연산자에는 적용 할 수 없습니다. 그게 제가 시도한 오류입니다. 감사. – Geo

관련 문제