繁体   English   中英

无法将 lambda 表达式转换为 inted 委托类型

[英]Cannot convert lambda expression to inteded delegate type

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

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

我使用以下功能:

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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM