[c#]不能从 IEnumerable转换到 IEnumerable

标签: Linq C#
发布时间: 2017/2/28 22:52:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在世界的前端编程最近,没有沾过,但我潜入回 C# 我正在进行一个项目。 我很确定我的一些模型和通用的功能,和我给出以下错误︰

错误 3 参数 2︰ 不能从转换 'System.Collections.Generic.IEnumerable<T> [c:\Program 文件 (x86) \Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]' 到 'System.Collections.Generic.IEnumerable<T> [c:\Program 文件 (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;
    }

似乎无法得到编译时间错误,走了。任何人有任何想法如何解决这个问题?

解决方法 1:

由于 @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)
官方微信
官方QQ群
31647020