如何解决将一个词典转换为另一本词典的最佳方法是什么
| 我有一本字典,条目看起来像这样:dictionary[\"ABC.123\"] = \"Test\"
dictionary[\"DEF.123\"] = \"Test2\"
dictionary[\"EFG.123\"] = \"Test3\"
dictionary[\"EFG.343\"] = \"Test3\"
dictionary[\"ABC.456\"] = \"Test\"
并且我想创建一个新的字典,如下所示:(基本上是解析出\“。\”之前的开始字符串,并将其创建为键并使用相同的值。
dictionary[\"ABC\"] = \"Test\"
dictionary[\"DEF\"] = \"Test2\"
dictionary[\"EFG\"] = \"Test3\"
如您所见:第一个字典中键的第一部分与值之间始终存在1到1的映射,因此不会发生冲突
使用LINQ从第一个字典创建第二个字典的最简单方法是什么?
我可以手动遍历每条记录并解析出新的密钥并创建每条新记录,但是我发现有一种使用LINQ的方式
解决方法
var newDict = dictionary.GroupBy(kvp => kvp.Key.Remove(kvp.Key.IndexOf(\'.\')))
.ToDictionary(grp => grp.Key,grp => grp.First().Value);
尽管普通的“ 3”可能会更具可读性和效率:
var newDict = new Dictionary<string,string>();
foreach (var kvp in dictionary)
{
newDict[kvp.Key.Remove(kvp.Key.IndexOf(\'.\'))] = kvp.Value;
}
, var dict2 = dictionary.GroupBy(x => x.Key.Split(\'.\')[0])
.ToDictionary(g => g.Key,g => g.First().Value);
, 一种简单的方法是使用Select方法与ToDictionary一起生成所需的KeyValuePair
var response = dictionary
.Select(kvp => new KeyValuePair<string,string>(kvp.Key.Remove(kvp.Key.IndexOf(\'.\')),kvp.Value))
.ToDictionary(kvp => kvp.Key,kvp => kvp.Value);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。