我已经创建了一种从Azure移动服务上的查询返回任务的方法。
但是当我为方法设置返回类型时,即Task
我得到这些错误指向方法的返回部分:
我试图通过使用通用的ILI来解决这个问题,但似乎这不能用于异步方法。
有没有人知道如何更正此方法中的返回类型错误?
http://hastebin.com/ziwovovabe.tex
public async static Task<Item> QueryTable()
{
var table = App.MobileService.GetTable<Item>();
IMobileServiceTableQuery<Item> query = table.
OrderBy(item => item.Id);
Task<Item> items = new Task<Item>();
items = await query.ToListAsync();
return items;
}
答案 0 :(得分:3)
该方法返回Task<Item>
,但该方法的异步性质为您处理Task<>
部分。您的代码应该只返回Item
。也许这样的事情?:
public async static Task<Item> QueryTable()
{
var table = App.MobileService.GetTable<Item>();
IMobileServiceTableQuery<Item> query = table.
OrderBy(item => item.Id);
return await query.ToListAsync();
}
但是,ToListAsync()
表示这将返回项目的集合,而不是单个项目。您想要从该系列中返回特定商品吗?像这样的东西?:
return await query.ToListAsync().Single(i => i.SomeProperty == someValue);
或许你真的想要归还这个系列?在这种情况下,返回类型可能是集合类型。像这样:
public async static Task<IList<Item>> QueryTable()
{
// ...
}
关键是await
关键字为您创建Task<>
,您需要做的就是在Task<>
内返回类型。
答案 1 :(得分:2)
此:
await query.ToListAsync();
return items;
尝试返回Task<List<Item>>
,而您的返回类型为Task<Item>
。目前,您的查询返回一个集合,而不是单个项目。它目前的实施方式,返回类型应为Task<List<Item>>
:
public async static Task<List<Item>> QueryTable()
{
var table = App.MobileService.GetTable<Item>();
IMobileServiceTableQuery<Item> query = table.
OrderBy(item => item.Id);
return await query.ToListAsync();
}