如何获取字典属性值的字典?

时间:2014-06-02 14:01:25

标签: c# dictionary properties

我有这个:

public class GraphicsDraw
{
    public Dictionary<int,GraphicItem> items { get; set; }
}
public abstract class GraphicItem
{
    public float ItemSize { get; set; }
}

我可以像这样访问所有ItemSize:

{
    GraphicsDraw gd = new GraphicsDraw();
    gd.items[i].ItemSize;
}

有没有什么好方法可以将ItemSize分别列在另一个字典中,同时使用相同的键和ItemSize值?

Dictionary<int, float> ItemSize = items.(???)

3 个答案:

答案 0 :(得分:3)

当然,使用ToDictionary

items.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ItemSize);

答案 1 :(得分:3)

你可以这样做,它使用LINQ,

Dictionary<int,float> itemSizes = 
    items.ToDictionary(item => item.Key, item => item.Value.ItemSize);

ToDictionary接受两个委托(或lambda表达式),第一个选择密钥,第二个选择字典值。

在您的情况下,您希望保留相同的键,但将值更改为ItemSize属性,从而将第二个表达式更改为。

答案 2 :(得分:0)

您可以简单地使用LINQ从items属性中提取必要的键和值。

items.ToDictionary(x => x.Key, x => x.Value.ItemSize);