gpt4 book ai didi

c# - ConcurrentDictionary AddOrUpdate 按谓词

转载 作者:行者123 更新时间:2023-11-30 20:06:38 25 4
gpt4 key购买 nike

我有一个ConcurrentDictionary。我使用它的 AddOrUpdate 方法来操作它的项目。

我的问题是:是否可以使用 AddOrUpdate 的更新参数来包含 if 语句?例如。我的 ConcurrentDictionary 包含具有字符串 Id 和 DateTime Date 属性的对象。

我愿意- 如果具有给定 Id 的对象不存在,则向其中添加一个新对象- 如果新对象的日期等于或大于现有对象,则更新它,如果小于,则不执行任何操作。

在我的例子中:

Dictionary.AddOrUpdate(testObject.Id,testObject,(k, v) => v);

我应该改变

(k, v) => v

if(v.Date >= existingItem.Date) (k, v) => v
else do nothing

最佳答案

v 是当前存在于集合中的值,所以什么也不做只是返回它。

Dictionary.AddOrUpdate(testObject.Id,testObject,(k, v) => 
(v.Date >= existingItem.Date) ? testObject : v);

更具可读性:

Dictionary.AddOrUpdate(testObject.Id,testObject,(k, v) => 
{
if(v.Date >= existingItem.Date)
return testObject;
else
return v;
});

关于c# - ConcurrentDictionary AddOrUpdate 按谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com