Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从IEnumerable转换为IEnumerable_C#_Linq_Generics_Ienumerable_Mscorlib - Fatal编程技术网

C# 无法从IEnumerable转换为IEnumerable

C# 无法从IEnumerable转换为IEnumerable,c#,linq,generics,ienumerable,mscorlib,C#,Linq,Generics,Ienumerable,Mscorlib,最近,我一直在从事前端编程,但我正在为一个项目重新投入C语言。我正在定义一些模型和通用功能,并出现以下错误: 错误3参数2:无法从“System.Collections.Generic.IEnumerable[c:\Program Files x86\Reference Assembly\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]”转换为“System.Collections.Generic.IEnumerable[c:\Program

最近,我一直在从事前端编程,但我正在为一个项目重新投入C语言。我正在定义一些模型和通用功能,并出现以下错误:

错误3参数2:无法从“System.Collections.Generic.IEnumerable[c:\Program Files x86\Reference Assembly\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]”转换为“System.Collections.Generic.IEnumerable[c:\Program Files x86\Reference Assembly\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;
    }
以及创建功能:

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;
    }

似乎无法消除编译时错误。有人知道如何解决这个问题吗?

多亏了@JeffMercado,解决方案非常简单

我的第二个Create函数的方法签名需要是:

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)

您的Create函数应该是泛型的。那不是从哪里来的?它与其他Create函数不同。谢谢@JeffMercado。就是这样。请输入此解决方案作为答案,以便我们和其他人可以更轻松地从您的问题中学习?