2014-11-09 6 views
0

로 변환 할 수 없습니다 요즘 프론트 엔드 프로그래밍의 세계에 떨어져 있었지만 내가 일하고 프로젝트의 C 번호로 다시 다이빙을 생각했습니다. 내 모델과 일반적인 기능의 일부를 정의하고, 다음과 같은 오류가 점점 오전 :는 IEnumerable을 <T>에서 IEnumerable을 <T>

오류는 다음과 같은 함수에서 return 문에서 오는

Error 3 Argument 2: cannot convert from 'System.Collections.Generic.IEnumerable<T> [c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]' to 'System.Collections.Generic.IEnumerable<T> [c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]'

:

public static PagedResult<T> Create<T, TEntity>(IOrderedQueryable<TEntity> query, PagedRequest pagedRequest, Func<TEntity, T> converter) 
     where T : class 
    { 
     var count = query.Count(); 

     if (pagedRequest.SortInfo.Fields.Any()) 
     { 
      var firstPass = true; 
      foreach (var sortOrder in pagedRequest.SortInfo.Fields) 
      { 
       if (firstPass) 
       { 
        firstPass = false; 
        query = sortOrder.Direction == SortDirection.Ascending 
           ? query.OrderBy(sortOrder.Field) : 
            query.OrderByDescending(sortOrder.Field); 
       } 
       else 
       { 
        query = sortOrder.Direction == SortDirection.Ascending 
           ? query.ThenBy(sortOrder.Field) : 
            query.ThenByDescending(sortOrder.Field); 
       } 
      } 
     } 

     query = (IOrderedQueryable<TEntity>) query.Skip((pagedRequest.Page - 1) * pagedRequest.PageSize).Take(pagedRequest.PageSize); 

     var list = new List<T>(); 
     foreach (var entity in query) 
     { 
      list.Add(converter(entity)); 
     } 

     return Create(pagedRequest, list.AsEnumerable(), count); 
    } 

와 함수를 만듭니다 :

static public PagedResult<T> Create(PagedRequest request, IEnumerable<T> data, long totalCount) 
    { 
     var result = new PagedResult<T> {Status = ResultStatus.Successful, Data = data.ToArray()}; 

     result.Count = result.Data.Count(); 
     result.TotalCount = totalCount; 

     result.Page.Index = request.Page; 
     result.Page.Size = request.PageSize; 
     if (result.Page.Size > 0) 
     { result.Page.Count = (long)Math.Ceiling((double)totalCount/result.Page.Size); } 

     return result; 
    } 

컴파일 시간 오류가 없어 질 것 같지 않습니다. 아무도이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

+4

귀하의'만들기() '함수는 일반적인해야한다. 'T'는 어디에서 왔는가? 그것은 다른'Create()'함수와 같은'T'가 아닙니다. –

+0

Thanks @JeffMercado. 그거였다. – mgoodric

+0

우리와 다른 사람들이 귀하의 질문에서 더 쉽게 배울 수 있도록이 솔루션을'대답 '으로 입력하십시오. – Roland

답변

0

@ JeffMercado 덕분에 솔루션은 매우 간단했습니다.

할 필요가 내 초 만들기 기능을하는 방법 서명 : 대신

static public PagedResult<T> Create<T>(PagedRequest request, IEnumerable<T> data, long totalCount) 

:

static public PagedResult<T> Create(PagedRequest request, IEnumerable<T> data, long totalCount) 
관련 문제