LINQ - Convert List to Dictionary with Value as List
I have a
List<MyObject>
that I retrieve from the database. However, I would like it keyed by a property in MyObject for grouping purposes. What is the best way with LINQ to cast my list to:
Dictionary<long, List<MyObject>>
I have the following:
myObjectList.ToDictionary(x => x.KeyedProp开发者_StackOverflow社区erty)
But it returns:
Dictionary<long, MyObject>
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());
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);
精彩评论