如果使用 linq 的字典中存在键,则向值添加额外的字符

Posted

技术标签:

【中文标题】如果使用 linq 的字典中存在键,则向值添加额外的字符【英文标题】:Add extra character to value if key is present in the dictionary using linq 【发布时间】:2021-07-12 10:17:55 【问题描述】:

如果 Dictionary 对象中存在键,我想将“_new”添加到现有值,否则我想将其保留为空白。

我有一个字典对象

"LanguageMapping": 
    "LanguageMappingCode": 
      "en-CA": "ca-en",
      "fr-CA": "ca-fe",
      "ab-GB": "gb-ab",  
.....so on    
    
  

我正在使用 Linq 从键中获取值。

_languageMapping.LanguageMappingCode.FirstOrDefault(x => x.Key == LanguageCode)Value

目前,如果我传递密钥“en-CA”,我会收到“ca-en”的响应,但我希望得到“ca-en_new”的响应。

使用Linq可以实现吗?

【问题讨论】:

这能回答你的问题吗? How to update the value stored in Dictionary in C#? 我想实现类似 dict[key] = value + newValue 但使用 Linq 并在运行时 不容易,不创建新字典(这似乎是一项昂贵的操作)。字典中的值是否需要更改,或者您使用的值?如果是后者,只需将_new 附加到您从字典中获得的Value @Martin 我们可以在不使用 + 或附加的情况下对 Linq 的值做一些事情吗? _languageMapping.LanguageMappingCode.FirstOrDefault(x => x.Key == LanguageCode)Value 有this answer重复。 【参考方案1】:

我不清楚您是只想修改 Dictionary 中使用的值,还是要更新 Dictionary 中的所有值(或其他)。

这将创建一个新的Dictionary,每个值都附加了_new

var newDict = _languageMapping.LanguageMappingCode.ToDictionary(item => item.Key, item => item.Value + "_new");

这是一项昂贵的操作。

否则,您可以在使用之前将_new 附加到该值:

var value = _languageMapping.LanguageMappingCode.FirstOrDefault(x => x.Key == LanguageCode).Value + "_new";

【讨论】:

我想在不使用 + 或 append 的情况下形成一个新值。 @user2148124 为什么?我想不出任何简单的方法来连接两个字符串而不使用+string.Append

以上是关于如果使用 linq 的字典中存在键,则向值添加额外的字符的主要内容,如果未能解决你的问题,请参考以下文章

字典操作

如何根据密钥是否已存在更新我的字典? [重复]

如何使用linq从字典中获取嵌套键值对[重复]

如果字典尚不存在,则将条目添加到字典

Python字典键值对的添加和遍历

从文本文件导入数据时向预先存在的字典键添加值(Python 3)