我目前正在编写这样的方法:
public async Task<UserModel> GetUserByUserIdAsync(string userId)
{
IQueryable<UserEntity> usersQuery = BuildQueryable(userId);
bool any = await usersQuery.ExecuteQuery().AnyAsync();
if (!any) return null; // wanna do other logic in the future
return (await usersQuery.ExecuteQuery().SingleAsync()).ToUserModel();
}
正如你所看到的,我调用了await usersQuery.ExecuteQuery()
两次,并且ExecuteQuery()
是一种迭代我的数据库的方法,可以被认为是一个昂贵的操作。有什么办法可以IAsyncEnumerable<T>
像平时一样保存IEnumerable<T>
并在整个代码中重新使用它?
我考虑过使用ToListAsync()
它,但我不确定这是否被认为是好的做法。我还读到我可以返回 aTask<IAsyncEnumerable<T>>
并用它做点什么。处理这个问题的最佳方法是什么?我想实施最有效的解决方案。