Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# 使用特定列core 3.1上的多个项目进行异步分页和筛选_C#_Asp.net Core_Asp.net Core 3.1 - Fatal编程技术网

C# 使用特定列core 3.1上的多个项目进行异步分页和筛选

C# 使用特定列core 3.1上的多个项目进行异步分页和筛选,c#,asp.net-core,asp.net-core-3.1,C#,Asp.net Core,Asp.net Core 3.1,有一个NetCore3.1项目,我试图过滤一个大数据集~200000行信息。使用ReflectionIT包进行分页 我从break更改为3.X时得到“无法翻译”错误。我无法首先将其转换为列表/枚举,因为处理它需要非常长的时间,并且PagingList.CreateAsync()需要实现IAsyncQueryProvider的iQueryTable 此外,如果我将过滤后的数据集转换为列表/可枚举数据集,然后再转换回AsQueryable(),则会出现错误:“InvalidOperationExce

有一个NetCore3.1项目,我试图过滤一个大数据集~200000行信息。使用ReflectionIT包进行分页

我从break更改为3.X时得到“无法翻译”错误。我无法首先将其转换为列表/枚举,因为处理它需要非常长的时间,并且PagingList.CreateAsync()需要实现IAsyncQueryProvider的iQueryTable

此外,如果我将过滤后的数据集转换为列表/可枚举数据集,然后再转换回AsQueryable(),则会出现错误:“InvalidOperationException:源IQueryable的提供程序未实现IAsyncQueryProvider。只有实现IAsyncQueryProvider的提供程序才能用于实体框架异步操作。”

在对多个输入进行过滤时,如何保持这种异步和快速,有什么想法吗

            var fixedAssetList = _context.FA_ISA.AsNoTracking();


        if (!string.IsNullOrWhiteSpace(filter))
        {
            var elements = filter.Split(",");
            if (!string.IsNullOrWhiteSpace(searchOption))
            {
                if (searchOption == "Serialnumber")
                {
                    fixedAssetList = fixedAssetList.Where(s => elements.Any(b=> s.Serialnumber.Contains(b)));
                }
                if (searchOption == "Asset")
                {
                    fixedAssetList = fixedAssetList.Where(s => elements.Any(b => s.Asset.Contains(b)));
                }
                if (searchOption == "AssetDescription2")
                {
                    fixedAssetList = fixedAssetList.Where(s => elements.Any(b => s.AssetDescription2.Contains(b)));
                }
                if (searchOption == "MainAssetno_Text")
                {
                    fixedAssetList = fixedAssetList.Where(s => elements.Any(b => s.MainAssetno_Text.Contains(b)));
                }
            }
        }
        var model =await PagingList.CreateAsync(fixedAssetList, 10, page, sortExpression, "Serialnumber");

        model.RouteValue = new RouteValueDictionary { { "filter", filter }, { "searchOption", searchOption } };

因为类型转换错误。'elements'返回一个数组(string[]),但s'接收FA_ISA。不过,它是字符串数组和字符串列表的比较。如果我必须首先将fixedAssetList设置为numerable(),那么代码可以正常工作,但由于它必须将表中的所有内容加载到内存中,因此需要花费很长时间来处理。请尝试
var fixedAssetList=\u context.FA\u ISA.AsNoTracking().AsQueryable()。PagingList的作者在首次定义查询后要添加where子句时,在此使用
AsQueryable
。@JayBridge出现以下错误:InvalidOperationException:源IQueryable的提供程序未实现IAsyncQueryProvider。只有实现IAsyncQueryProvider的提供程序才能用于实体框架异步操作。是否有使用Microsoft.EntityFrameworkCore的
在您的使用语句中?