c# - 'await' 运算符只能在异步 lambda 表达式错误中使用

标签 c# .net async-await

我有这个功能:

    public async Task<IEnumerable<RegionBreif>> GetAsync()
    {

    return await Table.Where(x => x.SiteId == _siteId).Select(r => new RegionBreif
    {
        IsServiceable = await RegionBreif.checkIfServicable(Context, r.SiteId, r.Id)
    }).ToArrayAsync();
}

还有这个函数:

public static async Task<bool?> checkIfServicable(DbContext context, int? _siteId, int _regionId)
{
    var t = (from ir in context.Set<InspectionReview>()
             join so in context.Set<SiteObject>() on ir.ObjectId equals so.Id
             where so.SiteRegionId == _regionId && so.SiteId == _siteId
             select (bool?)
             ir.IsNormal);

    return t.Count() == 0 ? (bool?)null : t.Any(x => x.Value == false) ? false : true;
}

在这一行:

await RegionBreif.checkIfServicable(Context, r.SiteId, r.Id)

我收到这个错误:

错误 13 'await' 运算符只能在异步 lambda 表达式中使用。考虑使用“async”修饰符标记此 lambda 表达式。

最佳答案

问题出在您传递给 Select 的 lambda 表达式中。如果你想在创建类型 RegionBreif 中使用 await,你必须传递一个 async lambda 表达式,如下所示:

Select(async r => new RegionBreif
{
    IsServiceable = await RegionBreif.checkIfServicable(Context, r.SiteId, r.Id)
})

关于c# - 'await' 运算符只能在异步 lambda 表达式错误中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585641/

相关文章:

c# - 静态类和静态方法

c# - XAML 中的 WPF 文本 block 绑定(bind)

c# - 使用 Visual Studio 2010 为较旧的 .net 框架创建

c# - 在 XAML 中正确设置绑定(bind)源

c# - C#中扫雷游戏的非重复随机数

c# - 在 Windows Azure 上部署 WCF 服务

c# - 如何从 SQLDataReader 读取行版本或时间戳 SQL Server 数据类型到 C# 变量

javascript - 使用 async/await 进行 sequelize-query 的无限循环

javascript - 谷歌云/Firebase函数: await is only valid in async function

c# - CA1001 在异步方法上实现 IDisposable