从方法返回泛型任务时的转换错误

本文关键字:转换 错误 任务 方法 返回 泛型 | 更新日期: 2024-10-30 21:21:55

我创建了一个方法,用于从 Azure 移动服务上的查询返回任务。但是当我为方法设置返回类型时,即Task我收到指向方法返回部分的这些错误:

我试图通过使用通用 ILIst 来解决此问题,但这似乎不能用于异步方法。

有谁知道如何纠正此方法中的返回类型错误?

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;
}

从方法返回泛型任务时的转换错误

该方法返回一个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<> 中的类型 .

这个:

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();
}