2014-06-02 3 views
0

у меня есть это:Как получить словарь значений свойств словаря?

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

Конечно, с помощью ToDictionary:

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

Вы можете сделать, который использует LINQ,

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

ToDictionary принимает два делегата (или лямбда-выражения), то первый один, чтобы выбрать ключ и второй, чтобы выбрать значение словаря.

В вашем случае вы хотите сохранить один и тот же ключ, но измените значение на свойство ItemSize, таким образом, второе выражение.

0

Вы можете просто использовать LINQ для извлечения необходимых ключей и значений из свойства items.

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

Это сообщение автоматически помечено как низкое качество, потому что это только код. Не могли бы вы расширить его с помощью некоторого текста, объясняющего, как он работает/как он решает проблему? – gung

Смежные вопросы