C# 如何将ValueCollection转换为Dictionary?
我有一个类型为C# 如何将ValueCollection转换为Dictionary?,c#,.net,dictionary,C#,.net,Dictionary,我有一个类型为dictionary的dictionary成员。我想要的是从这个字典中获取嵌套字典,即字典。我想我应该使用myDict.Values来获取它,但实际上返回的是ValueCollection,而不是嵌套字典本身 现在,我正在尝试使用ValueCollection.ToDictionary函数来完成此操作,但如果您已经完成了类似的操作,请与我们分享 更新 我想返回嵌套字典 Dictionary<string, List<SomeType>> GetKeyPair
dictionary
的dictionary成员。我想要的是从这个字典中获取嵌套字典,即字典
。我想我应该使用myDict.Values
来获取它,但实际上返回的是ValueCollection
,而不是嵌套字典本身
现在,我正在尝试使用ValueCollection.ToDictionary函数来完成此操作,但如果您已经完成了类似的操作,请与我们分享
更新
我想返回嵌套字典
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
// get nested dictionary from this.myDict
}
字典GetKeyPairValues()
{
//从this.myDict获取嵌套字典
}
我想要的是得到嵌套字典
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
// get nested dictionary from this.myDict
}
根据您的评论,看看LINQ表达式对此的复杂性,为什么不使用基本的for循环呢
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
foreach (var pair in dict)
{
yield return pair.Value;
}
}
字典GetKeyPairValues()
{
foreach(dict中的var对)
{
收益率-收益对.价值;
}
}
它也可能比使用LINQ更有效
我想要的是得到嵌套字典
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
// get nested dictionary from this.myDict
}
根据您的评论,看看LINQ表达式对此的复杂性,为什么不使用基本的for循环呢
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
foreach (var pair in dict)
{
yield return pair.Value;
}
}
字典GetKeyPairValues()
{
foreach(dict中的var对)
{
收益率-收益对.价值;
}
}
它也可能比使用LINQ更有效。实际上字典
实现了多个值
属性。如果您通过IDictionary
使用它,您将获得一个ICollection
IDictionary dict=new Dictionary();
i采集=记录值;
实际上字典
实现了多个值
属性。如果您通过IDictionary
使用它,您将获得一个ICollection
IDictionary dict=new Dictionary();
i采集=记录值;
试试这个:
var dictionary = new Dictionary<string, Dictionary<string, List<int>>>();//initialize your source dictionary
var mergedDictionary = dictionary.SelectMany(d => d.Value).ToDictionary(k=>k.Key, k=>k.Value);
var dictionary=newdictionary()//初始化源字典
var mergedDictionary=dictionary.SelectMany(d=>d.Value).ToDictionary(k=>k.Key,k=>k.Value);
更新:使用ToDictionary尝试以下操作:
var dictionary = new Dictionary<string, Dictionary<string, List<int>>>();//initialize your source dictionary
var mergedDictionary = dictionary.SelectMany(d => d.Value).ToDictionary(k=>k.Key, k=>k.Value);
var dictionary=newdictionary()//初始化源字典
var mergedDictionary=dictionary.SelectMany(d=>d.Value).ToDictionary(k=>k.Key,k=>k.Value);
更新:使用ToDictionary您需要使用
GroupBy
按键进行分组,然后使用同一键合并所有列表:
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
return dic.Values.SelectMany(d => d)
.GroupBy(p => p.Key)
.ToDictionary(g => g.Key,
g => g.SelectMany(pair => pair.Value)
.ToList());
}
字典GetKeyPairValues()
{
返回dic.Values.SelectMany(d=>d)
.GroupBy(p=>p.Key)
.ToDictionary(g=>g.Key,
g=>g.SelectMany(pair=>pair.Value)
.ToList());
}
您需要使用GroupBy
按键进行分组
,然后使用同一键合并所有列表:
Dictionary<string, List<SomeType>> GetKeyPairValues()
{
return dic.Values.SelectMany(d => d)
.GroupBy(p => p.Key)
.ToDictionary(g => g.Key,
g => g.SelectMany(pair => pair.Value)
.ToList());
}
字典GetKeyPairValues()
{
返回dic.Values.SelectMany(d=>d)
.GroupBy(p=>p.Key)
.ToDictionary(g=>g.Key,
g=>g.SelectMany(pair=>pair.Value)
.ToList());
}
当当前词典中有一个以上的词典时,预期的结果是什么?我想合并它们。在我的例子中,一个嵌套字典的键值肯定不会和另一个发生冲突。当当前字典中有一个以上的字典时,预期的结果是什么?我想合并它们。在我的例子中,一个嵌套字典的键值肯定不会与另一个发生冲突。我认为SelectMany的输出应该是IEnumerable,而不是字典。@AksharRoop它会,这不是你要找的。我希望字典隐藏一些细节,说明事情是如何实现的。@AksharRoop查看我的答案,了解我认为SelectMany的get-That输出是IEnumerable,而不是字典。@AksharRoop它会,这不是你要找的。我想让Dictionary隐藏一些细节是如何实现的。@AksharRoop看到我的答案,我第一次尝试使用ToDictionary时是如何做到这一点的,但ToDictionary(x=>x.Keys,x=>x.Values)实际上是在创建Dictionary,我在第一次尝试使用ToDictionary时就是这么做的,但是ToDictionary(x=>x.键,x=>x.值)实际上是在为您的答案创建Dictionary of Thank,但我实际上是在寻找geting Dictionary类型,而不是ICollection。但是Values提供了字典中的所有字典,因此是一个集合感谢您的答案,但是我实际上是在寻找geting Dictionary类型,而不是ICollection。但是Values提供了所有的D字典中的字典,因此是一个集合