我有类型的变量Dictionary<MyType, List<MyOtherType>>
我想将其转换为Lookup<MyType, MyOtehrType>
我想用LAMBDA功能首先,扁平化的字典,然后转换这个使用来查找ToLookup()
我被困用字典。 我想过使用,但的SelectMany无法得到它的工作。 任何人有一个想法如何做到这一点?
我有类型的变量Dictionary<MyType, List<MyOtherType>>
我想将其转换为Lookup<MyType, MyOtehrType>
我想用LAMBDA功能首先,扁平化的字典,然后转换这个使用来查找ToLookup()
我被困用字典。 我想过使用,但的SelectMany无法得到它的工作。 任何人有一个想法如何做到这一点?
怎么样:
var lookup = dictionary.SelectMany(pair => pair.Value,
(pair, Value) => new { pair.Key, Value })
.ToLookup(pair => pair.Key, pair => pair.Value);
它感觉的这样当字典已经有适当分组的所有信息的浪费一点点,但我不能看到一个简单的方法一轮。 当然,你可以实现ILookup<TKey, TValue>
与各地字典的包装自己......
同乔恩的方法,但避免了一个匿名类型的创建:
var lookup = dictionary
.SelectMany(p => p.Value, Tuple.Create)
.ToLookup(p => p.Item1.Key, p => p.Item2);