C# 仅限实现';IAsynceneumerable';可用于实体框架异步操作
我正在尝试使用以下代码在Linq中动态设置order by:C# 仅限实现';IAsynceneumerable';可用于实体框架异步操作,c#,linq,ef-core-3.0,C#,Linq,Ef Core 3.0,我正在尝试使用以下代码在Linq中动态设置order by: Func<TransactionResult, Object> orderByFunc = null; var sortKey = query.SortOption.Split(":")[0]; var sortDirection = query.SortOption.Split(":")[1];
Func<TransactionResult, Object> orderByFunc = null;
var sortKey = query.SortOption.Split(":")[0];
var sortDirection = query.SortOption.Split(":")[1];
if (sortKey == "Date")
orderByFunc = item => item.Created;
else if (sortKey == "PatientName")
orderByFunc = item => item.Customer.FirstName;
else if (sortKey == "Status")
orderByFunc = item => item.Status;
else if (sortKey == "Source")
orderByFunc = item => item.Source;
else if (sortKey == "Amount")
orderByFunc = item => item.Amount;
if (sortDirection== "asc")
{
tQuery = tQuery.OrderBy(orderByFunc).AsQueryable();
}
else
{
tQuery = tQuery.OrderByDescending(orderByFunc).AsQueryable();
}
Func orderByFunc=null;
var sortKey=query.SortOption.Split(“:”[0];
var sortDirection=query.SortOption.Split(“:”[1];
如果(排序键==“日期”)
orderByFunc=item=>item.Created;
else if(sortKey==“PatientName”)
orderByFunc=item=>item.Customer.FirstName;
else if(sortKey==“状态”)
orderByFunc=item=>item.Status;
else if(sortKey==“源”)
orderByFunc=item=>item.Source;
否则,如果(排序键=“金额”)
orderByFunc=item=>item.Amount;
如果(排序方向==“asc”)
{
tQuery=tQuery.OrderBy(orderByFunc.AsQueryable();
}
其他的
{
tQuery=tQuery.OrderByDescending(orderByFunc.AsQueryable();
}
我得到了一个错误:源“IQueryable”没有实现“IAsyncEnumerable”。只有实现“IAsyncEnumerable”的源才能用于实体框架异步操作
非常感谢您提供的任何帮助。您似乎使用了错误的实现。请参阅副本。如果您仍然无法理解,请随时发布一个新问题,确保您解释了您已经做了哪些研究(包括查看现有副本),以及具体需要哪些帮助。实际问题是,通过使用
Func
您正在执行查询客户端,这就是为什么存在.AsQueryable()
调用,但上下文已切换,无法再查询。通常的解决方案是将Func
更改为Expression
,从而命中Queryable
重载,而不离开EF Queryable上下文。