scottm
scottm

Reputation: 28703

Dictionary<Foo, List<Bar>> How to assign the list to a property of the key with LINQ?

I have a dictionary as described in the question. My Foo class looks like this:

class Foo {
 List<Bar> Bars {get;set;}
}

I want to run through the dictionary, and assign the KeyValuePair value to the Key's Bars property. Is that possible?

I have something like this but it's a little wonky:

List<Foo> foos = new List<Foo>();

foreach(var kvp in myDict)
{
  kvp.Key.Bars = kvp.Value;
  foos.Add(kvp.Key);
}

return foos;

EDIT: This seems a little better:

    foreach (var kvp in results.Keys)
    {
        kvp.Bars = results[kvp];
    }

    return results.Select(kvp => kvp.Key);

Upvotes: 3

Views: 287

Answers (2)

Jerome
Jerome

Reputation: 1192

How about

List<Foo> foos = (from kvp in myDict
                  select new Foo() { Bars = kvp.Value }).ToList();

or

List<Foo> foos = (from kvp in myDict
                  let dummy = (kvp.Key.Bars = kvp.Value)
                  select kvp.Key).ToList();

Upvotes: 1

Lasse Espeholt
Lasse Espeholt

Reputation: 17782

I'm not 100% sure of what you mean, but what about this:

var foos = myDict.Select(kvp =>
           {
               kvp.Key.Bars = kvp.Value;

               return kvp.Key;
           }).ToList();

Upvotes: 3

Related Questions