C# 如何在EFCore中通过异步方法过滤数据?
我想按ef core筛选数据,并尝试通过返回C# 如何在EFCore中通过异步方法过滤数据?,c#,.net-core,ef-core-3.1,C#,.net Core,Ef Core 3.1,我想按ef core筛选数据,并尝试通过返回Task的异步方法筛选用户 但是有了这个代码,我得到了这个错误 CS4010:无法将异步lambda表达式转换为委托类型“Func”。异步lambda表达式可能返回void、Task或Task,它们都不能转换为“Func” 那么,如何通过我的方法过滤我的可查询数据呢?该错误告诉您不能在谓词中使用异步 不幸的是,您需要改变方法,通过内存中的数据进行循环 // Get all data, convert to list List<User> u
Task
的异步方法筛选用户
但是有了这个代码,我得到了这个错误
CS4010:无法将异步lambda表达式转换为委托类型“Func”。异步lambda表达式可能返回void、Task或Task,它们都不能转换为“Func”
那么,如何通过我的方法过滤我的可查询数据呢?该错误告诉您不能在谓词中使用异步 不幸的是,您需要改变方法,通过内存中的数据进行循环
// Get all data, convert to list
List<User> userRecords = _context.User.ToList();
List<User> availableUsers = new List<User>();
foreach (User userRecord in userRecords)
{
//Assuming you will always successfully receive a boolean
if (await _userInterface.CheckUserAvabilityAsync(user, userRecord.Id))
availableUsers.push(userRecord);
}
return availableUsers;
//获取所有数据,转换为列表
List userRecords=_context.User.ToList();
列表可用用户=新列表();
foreach(userRecords中的用户userRecord)
{
//假设您将始终成功接收布尔值
if(wait_userInterface.checkUserAvabilitySync(user,userRecord.Id))
可用用户推送(userRecord);
}
返回可用用户;
这应该可以解决问题。那将毫无意义。EF核心是一个ORM。它将LINQ查询转换为SQL。即使是一个简单的函数调用,您发布的内容也无法转换为SQL—如何将对本地方法的调用转换为SQL。至于异步,SQL查询不指定如何检索数据,而是指定数据应该是什么。异步执行在SQL查询中没有任何意义
// Get all data, convert to list
List<User> userRecords = _context.User.ToList();
List<User> availableUsers = new List<User>();
foreach (User userRecord in userRecords)
{
//Assuming you will always successfully receive a boolean
if (await _userInterface.CheckUserAvabilityAsync(user, userRecord.Id))
availableUsers.push(userRecord);
}
return availableUsers;