无法将 lambda 表达式转换为指定的委托类型

Cannot convert lambda expression to inteded delegate type

我正在尝试更新 mongodb 数据库中的字段,但出现以下错误:

无法将 lambda 表达式转换为预期的委托类型,因为块中的某些 return 类型不能隐式转换为委托 return 类型

我使用以下函数:

List<Items> items= _pat.Find(s => s.Token == data[0]).ToList();

_logs.UpdateOneAsync(s => s.item_id == items[0].item_id
    && s.Date == DateTime.Parse(data[1]),
    s => s.Status = data[2]);

但是在函数的更新部分,在 s => s.Status = data[2],我得到了错误。

如果不通过这种方式,我将如何更新 s.Status

UpdateOneAsync 定义为:

Task<UpdateResult> UpdateOneAsync(FilterDefinition<TDocument> filter, 
    UpdateDefinition<TDocument> update, UpdateOptions options = null,
    CancellationToken cancellationToken = default(CancellationToken));

UpdateOneAsync的签名是:

Task<UpdateResult> UpdateOneAsync(FilterDefinition<TDocument> filter, 
    UpdateDefinition<TDocument> update, UpdateOptions options = null,
    CancellationToken cancellationToken = default(CancellationToken));

因此,您需要使用 UpdateDefinition 而不是 lambda 函数。 所以不要使用 s => s.Status = data[2],而是使用 Builders<Items>.Update.Set(p => p.Status, data[2]).