在做了研究后我发现文件db 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 result = p.GetStartedDemo()。Wait();
无法分配隐式类型的代码变量。问题是什么?
答案 0 :(得分:2)
您正在执行任务对象的“等待”方法,并尝试将其返回分配给“结果”变量。
如果您检查Task.Wait()
method signature,则会看到它没有返回:
public void Wait();
我是你的例子,你的GetStartedDemo
不需要返回任务并且是“异步”,你没有在其中进行任何异步操作。你可以简单地返回你想要的调用者方法。
如果您想了解CosmosDB,建议您查看Microsoft documentation about it
为了使您的代码可以工作,您只需更改方法的返回类型即可实际匹配您返回的内容:
// 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.
}
}