通过拆分密钥对词典进行分组并创建新词典

每次转化费用

我有这样的字典:

Dictionary<string, object> properties = new Dictionary<string, object>()
{
    {"aa:bb", MyObject1},
    {"aa:cc", MyObject2},
    {"dd:xx", MyObject3},
    {"dd:yy", MyObject4}
};

字典的键是带有':'定界符的字符串现在,我想从该词典中创建一个新字典:

Dictionary<string, object> ddProperties = new Dictionary<string, object>()
{
{"xx", MyObject3},
{"yy", MyObject4}
};

我正在寻找一种通过拆分原始Dictionary的键来创建新Dictionary的优雅方法。LINQ有可能吗?

尝试:

var ddProperties = properties.ToDictionary
                    (kvp => kvp.Key.Split(':')[1], kvp => kvp.Value);

如果您只需要开头的内容dd(如您的示例输出所示),我将这样做:

var filteredPairs = from kvp in properties
                    let split = kvp.Key.Split(':')
                    where split[0] == "dd"
                    select new { Key = split[1], kvp.Value };

var ddProperties = filteredPairs.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

请注意,这里没有防止重复的保护措施。如果您期望转换后有重复的密钥,您将如何处理它们?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章