从方法返回通用任务时发生转换错误

Conversion errors when returning a generic task from a method

我已经创建了一种方法来 return 来自 Azure 移动服务查询的任务。 但是当我为方法设置 return 类型时,即 Task 我得到这些指向方法的 return 部分的错误:

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

有谁知道如何更正此方法中的 return 类型错误?

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

这个:

await query.ToListAsync();
return items;

尝试 return Task<List<Item>>,而你的 return 类型是 Task<Item>。目前,您的查询是 return 一个集合,而不是单个项目。目前的实现方式,return 类型应该是 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();
}

方法 return 是一个 Task<Item>,但该方法的异步性质会为您处理 Task<> 部分。您的代码应该只是 returning 一个 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() 意味着这是 returning collection 项,而不是单个项。您要 return collection 中的特定项目吗?是这样的吗?:

return await query.ToListAsync().Single(i => i.SomeProperty == someValue);

或者您实际上想要 return collection?在这种情况下,return 类型可能应该是 collection 类型。像这样:

public async static Task<IList<Item>> QueryTable()
{
    // ...
}

重点是 await 关键字为您创建了 Task<>,您需要做的就是 return Task<>.[=20 中的类型=]