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.KeyedProperty)

But it returns:

Dictionary<long, MyObject>

Answers


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

Need Your Help

$wpdb->insert not working, last_query doesn't show insert "SHOW FULL COLUMNS FROM"

php mysql wordpress

I run $wpdb-&gt;insert($table, $data) where data is an array with column_name => value and the insert is not working. I tried $wpdb-&gt;last_query and something bizarre comes back:

Is there an easy way in .NET to get "st", "nd", "rd" and "th" endings for numbers?

.net formatting date ordinals

I am wondering if there is a method or format string I'm missing in .NET to convert the following: