如何 return 来自异步方法 cosmos db 的结果?
how to return result from async method cosmodb?
经过研究,我发现文档数据库 api 支持分组,所以我已经使用 linq 实现了,
如何查看从数据库中获得的结果?
static void Main(string[] args)
{
Program p = new Program();
var result = p.GetStartedDemo().Wait();
}
private async Task GetStartedDemo()
{
var client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);
var documentUri = UriFactory.CreateDocumentCollectionUri("testdb", "retrieve");
var result = client.CreateDocumentQuery<Login>(documentUri)
.Where(i => i.logevent == "success" && i._ts > 1517405472 && i._ts <= 1518010272)
.GroupBy(t => t._ts);
return result;
}
错误:
var 结果 = p.GetStartedDemo().Wait();
无法分配隐式类型的代码变量。有什么问题?
您正在执行任务对象的 "Wait" 方法并试图将其 return 分配给 "result" 变量。
如果你检查 Task.Wait()
method signature 你会发现它没有 return:
public void Wait();
我是你的例子,你的 GetStartedDemo
到 return 一个任务并成为 "async" 是没有必要的,你没有在其中进行任何异步操作。您可以简单地 return 您想要适合调用方方法的内容。
如果您想了解 CosmosDB,我建议您查看 Microsoft documentation about it
为了使您的代码正常工作,您只需更改方法的 return 类型以实际匹配您的方法 returning:
// Considering that Login._t is of type "long":
private IEnumerable<IGrouping<long, Login>> GetStartedDemo()
{ /* ... */ }
然后,在您的 Main 方法中,您可以打印按 Login._t
分组的项目:
static void Main(string[] args)
{
Program p = new Program();
var result = p.GetStartedDemo();
foreach (var group in result)
{
Console.WriteLine("Group: " + group.Key);
foreach (Login login in group)
Console.WriteLine(" " + login.SomeProperty); // print something from the login object.
}
}
经过研究,我发现文档数据库 api 支持分组,所以我已经使用 linq 实现了,
如何查看从数据库中获得的结果?
static void Main(string[] args)
{
Program p = new Program();
var result = p.GetStartedDemo().Wait();
}
private async Task GetStartedDemo()
{
var client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);
var documentUri = UriFactory.CreateDocumentCollectionUri("testdb", "retrieve");
var result = client.CreateDocumentQuery<Login>(documentUri)
.Where(i => i.logevent == "success" && i._ts > 1517405472 && i._ts <= 1518010272)
.GroupBy(t => t._ts);
return result;
}
错误:
var 结果 = p.GetStartedDemo().Wait();
无法分配隐式类型的代码变量。有什么问题?
您正在执行任务对象的 "Wait" 方法并试图将其 return 分配给 "result" 变量。
如果你检查 Task.Wait()
method signature 你会发现它没有 return:
public void Wait();
我是你的例子,你的 GetStartedDemo
到 return 一个任务并成为 "async" 是没有必要的,你没有在其中进行任何异步操作。您可以简单地 return 您想要适合调用方方法的内容。
如果您想了解 CosmosDB,我建议您查看 Microsoft documentation about it
为了使您的代码正常工作,您只需更改方法的 return 类型以实际匹配您的方法 returning:
// Considering that Login._t is of type "long":
private IEnumerable<IGrouping<long, Login>> GetStartedDemo()
{ /* ... */ }
然后,在您的 Main 方法中,您可以打印按 Login._t
分组的项目:
static void Main(string[] args)
{
Program p = new Program();
var result = p.GetStartedDemo();
foreach (var group in result)
{
Console.WriteLine("Group: " + group.Key);
foreach (Login login in group)
Console.WriteLine(" " + login.SomeProperty); // print something from the login object.
}
}