返回LINQ时的c#异步
我刚刚意识到这段代码:
public async Task<List> GetTitleReviews(int titleID) { using (var context = new exampleEntities()) { return await context.Reviews.Where(x => x.Title_Id == titleID).ToList(); } }
…将无法工作,因为异步方法无法等待LINQ表达式。 我做了一些搜索,但只找到了一些过于复杂的解决方案。
如何将返回LINQ表达式的函数转换为异步版本?
添加System.Data.Entity
命名空间并利用Async
扩展方法
在这种情况下, ToListAsync
应该可以解决问题
using System.Data.Entity; public async Task> GetTitleReviews(int titleID) { using (var context = new exampleEntities()) { return await context.Reviews.Where(x => x.Title_Id == titleID).ToListAsync(); } }
从技术上讲,该方法不返回lambda。 它返回List
。
你发布的内容不会编译。 但这会:
public async Task> GetTitleReviews(int titleID) { using (var context = new exampleEntities()) { return await Task.Run(() => context.Reviews.Where(x => x.Title_Id == titleID).ToList()); } }
如果这不能回答你的问题,也许你可以更清楚地知道你想要完成什么,以及为什么上面没有这样做。