返回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()); } } 

如果这不能回答你的问题,也许你可以更清楚地知道你想要完成什么,以及为什么上面没有这样做。