我有一台ConcurrentDictionary。我使用它的AddOrUpdate方法来操作它的项。
我的问题是:是否可以使用AddOrUpdate的update参数来包含if语句?例如,我的ConcurrentDictionary包含具有string 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发布于 2012-03-06 00:27:48
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;
});发布于 2012-03-06 00:27:47
实现这一点的一种简单方法是,如果新值不大于原始值,则updateValueFactory lambda返回原始值:
Dictionary.AddOrUpdate(testObject.Id, testObject,
(key, value) => testObject.Date > value.Date ? testObject : value);https://stackoverflow.com/questions/9570110
复制相似问题