Трудно сказать наверняка, не зная, какой тип attributes
объявлен как. Похоже, что вы можете захотеть что-то вроде этого:
attributes.AddRange(PLAYER_ATTRIBUTE_DICTIONARY.Values.SelectMany(e => e));
Обновление
На основании вашего измененного вопроса, есть несколько способов взглянуть на это. Чтобы напрямую ответить на заданный вами вопрос (например, как смоделировать Java HashMap foreach в C#), вы можете заменить это:
PLAYER_ATTRIBUTE_DICTIONARY.forEach((p, a)-> {
следующим:
PLAYER_ATTRIBUTE_DICTIONARY.ToList().ForEach(kvp -> {
var p = kvp.Key;
var a = kvp.Value;
You может также просто использовать блок foreach
:
foreach(var keyValuePair in PLAYER_ATTRIBUTE_DICTIONARY)
{
var p = keyValuePair.Key;
var a = keyValuePair.Value;
Но это действительно пример проблемы XY, когда вы спрашиваете, как сделать конкретную вещь c, потому что вы предполагаете, что это способ решить вашу проблему. Вы делаете кучу действительно странных вещей, таких как создание словаря с List<Double>
s как ключами и значениями, и где кодируемые значения Double
в основном двоичные (один или ноль). Это, вероятно, не нужно для решения проблемы, которую вы пытаетесь решить. Если вы сосредоточитесь на том, какие данные вы на самом деле пытаетесь получить из своего словаря, я подозреваю, что вы, вероятно, могли бы иметь гораздо более простое решение, используя пару базовых c операторов LINQ.