我有这个:
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.(???)
答案 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);