我正在尝试从控制台应用程序调用异步方法。该方法将Task返回给Main方法。当我尝试查询FirstOrDefault时,我得到“任务不包含FirstOrDefault的定义”。我试图将结果转换为(JArray),但它说,“无法将类型System.Tasks.Task转换为Newtonsoft.Json.Linq.JArray
static async void Main(){
var result = Task.Run(() => MakeClientRequest());
string employeeId = result
.FirstOrDefault(x => x.Value<string>("employeeSequence") == "284")?
.Value<string>("id");
}
static async Task<JArray> MakeClientRequest()
{
....
....
JArray data = JArray.Parse(jsonString);
return data;
}
答案 0 :(得分:-1)
只需await
结果:
static async void Main()
{
var result = await MakeClientRequest();
string employeeId = result
.FirstOrDefault(x => x.Value<string>("employeeSequence") == "284")?
.Value<string>("id");
}
没有任何理由在这里启动Task
以获得结果,至少不是我在OP发布的代码中看到的。
如果你真的由于某种原因不想在这里使用await
,你可以等待任务完成:
var result = MakeClientRequest().GetAwaiter().GetResult();
但实际上,这与编译器在编写var result = await ...
时生成的内容相同。