C# 使用特定列core 3.1上的多个项目进行异步分页和筛选
有一个NetCore3.1项目,我试图过滤一个大数据集~200000行信息。使用ReflectionIT包进行分页 我从break更改为3.X时得到“无法翻译”错误。我无法首先将其转换为列表/枚举,因为处理它需要非常长的时间,并且PagingList.CreateAsync()需要实现IAsyncQueryProvider的iQueryTable 此外,如果我将过滤后的数据集转换为列表/可枚举数据集,然后再转换回AsQueryable(),则会出现错误:“InvalidOperationException:源IQueryable的提供程序未实现IAsyncQueryProvider。只有实现IAsyncQueryProvider的提供程序才能用于实体框架异步操作。” 在对多个输入进行过滤时,如何保持这种异步和快速,有什么想法吗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
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的代码>在您的使用语句中?