代码之家  ›  专栏  ›  技术社区  ›  scottm

dictionary<foo,list<bar>>如何使用linq将列表分配给键的属性?

  •  3
  • scottm  · 技术社区  · 16 年前

    我有一本问题中描述的字典。我的foo类如下:

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

    我想运行字典,并将keyValuePair值赋给键的Bars属性。有可能吗?

    我有这样的东西,但有点奇怪:

    List<Foo> foos = new List<Foo>();
    
    foreach(var kvp in myDict)
    {
      kvp.Key.Bars = kvp.Value;
      foos.Add(kvp.Key);
    }
    
    return foos;
    

    编辑: 这似乎有点好:

        foreach (var kvp in results.Keys)
        {
            kvp.Bars = results[kvp];
        }
    
        return results.Select(kvp => kvp.Key);
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   Lasse Espeholt    16 年前

    我不完全确定你的意思,但这是怎么回事:

    var foos = myDict.Select(kvp =>
               {
                   kvp.Key.Bars = kvp.Value;
    
                   return kvp.Key;
               }).ToList();
    
        2
  •  1
  •   Jerome    16 年前

    怎么样

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

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