C# 从异步方法返回任务以外的对象

C# 从异步方法返回任务以外的对象,c#,asp.net-core,C#,Asp.net Core,如何从异步方法返回任务以外的对象? 我在方法中做了一些异步工作,但我需要返回任务以外的内容或返回任务中的对象。我不知道 代码: 公共异步任务GetGroupedSearchString(int-shopId) { ICollection result=新集合(); IEnumerable ss=await ShopsExpressions.SearchString(this.Worker.GetRepo().DbSet).Where(s=>s.Active&&s.ShopId.Equals(Sh

如何从异步方法返回任务以外的对象? 我在方法中做了一些异步工作,但我需要返回任务以外的内容或返回任务中的对象。我不知道

代码:

公共异步任务GetGroupedSearchString(int-shopId)
{
ICollection result=新集合();
IEnumerable ss=await ShopsExpressions.SearchString(this.Worker.GetRepo().DbSet).Where(s=>s.Active&&s.ShopId.Equals(ShopId)).OrderBy(s=>s.DateCreated.toListSync();
添加(新的KeyValuePair(1,演示));
返回结果;
}
异步函数应返回任务

您需要在调用任务时等待它

var result = await GetGroupedSearchStrings(shopID);

async
的要点就是返回一个表示当前操作的任务,该任务在方法完成时封装返回值。你为什么还需要别的东西?调用代码是什么?@Alejandro我异步执行所有数据库操作,所以我只需要正确返回结果object,算了吧!从技术上讲,他们只需要返回一个可等待的模式,而不必是
Task[]
,定制的可等待模式是完全可能的,不过为了公平起见:应该只在有充分理由的情况下使用;而且,在许多情况下,
ValueTask[]
是完全合理的选择。但我同意:大多数人应该返回
Task[]
ValueTask[]
@marcgravel哇,我不知道
ValueTask[]
。那真是太好了。谢谢你的信息。
var result = await GetGroupedSearchStrings(shopID);