LINQ - Convert List to Dictionary with Value as List
Solution 1:
It sounds like you want to group the MyObject
instances by KeyedProperty
and put that grouping into a Dictionary<long,List<MyObject>>
. If so then try the following
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
Solution 2:
You should use the ToLookup
extension method on the Enumerable
class like so:
List<MyObject> list = ...;
ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
If you want to place that in a dictionary, then you could use the ToDictionary
extension method, like so:
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);