无法将 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])
.
我正在尝试更新 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])
.