我有一个异步方法给我 IEnumerable<T>
在查询 cosmos db 容器之后。
var count = (await myContainer.QueryAsync<int>(myQuery)).FirstOrDefault();
有没有一种(更简洁的)方法可以从异步方法中获取第一项而不用整个括在方括号中?像下面这样的东西?
var count = myContainer.QueryAsync<int>(myQuery).Await().FirstOrDefault();
最佳答案
var result = await myContainer.QueryAsync<int>(myQuery);
var count = result.FirstOrDefault();
更整洁。
没有非阻塞的方式来省略 await
(除了 GetAwaiter()
无论如何都很丑陋),你不能将它包装在扩展方法中,因为它还必须返回一个 Task<IEnumerable<int>>
。 .您能做的最好的事情就是通过将代码分成两个语句来提高代码的可读性。
关于c# - 如何巧妙地解包异步方法的结果对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58970436/