2014-11-09 114 views
0

我在最近的一次前端编程世界中一直没有成功,但我正在为我正在开发的一个项目潜水回到C#。我定义我的一些模型和通用功能,而且正在以下错误:无法从IEnumerable <T>转换为IEnumerable <T>

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]'

错误从return语句来在以下功能:

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不相同。 – 2014-11-09 05:04:09

+0

谢谢@JeffMercado。就是这样。 – mgoodric 2014-11-09 05:15:35

+0

您能否以“答案”的形式输入此解决方案,以便我们和其他人可以更轻松地从您的问题中学习? – Roland 2014-11-10 00:43:13

回答

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) 
相关问题