开发者

LINQ - Convert List to Dictionary with Value as List

开发者 https://www.devze.com 2023-01-12 22:43 出处:网络
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:

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);
0

精彩评论

暂无评论...
验证码 换一张
取 消