如果使用 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 的字典中存在键,则向值添加额外的字符的主要内容,如果未能解决你的问题,请参考以下文章