#c# #readonly-collection
#c# #сбор только для чтения
Вопрос:
Я хочу получить значения и ключи объекта. Сначала я его разыгрываю, а затем помещаю в foreach
цикл, чтобы получить ключи и значения.
object itemAttributes = web.javaScriptExecutor().ExecuteScript($"return window.INITIAL_STATE.items.itemAttributes")
var items = (ReadOnlyCollection<object>)itemAttributes;
foreach (Dictionary<string, object> item in items)
{
foreach (KeyValuePair<string, object> kvp in item)
{
if (Convert.ToString(kvp.Value) != null)
{
Name = Convert.ToString(kvp.Key), Value = Convert.ToString(kvp.Value) });
}
}
}
Я получаю сообщение об ошибке, когда хочу выполнить приведение
var items = (ReadOnlyCollection<object>)itemAttributes;
//Unable to cast object of type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' to type 'System.Collections.ObjectModel.ReadOnlyCollection`1[System.Object]'.
Комментарии:
1. Почему
ReadOnlyCollection
? Почему<object>
? В следующей строке вы перечисляетеitems
, как будто у вас естьIEnumerable<Dictionary<string,object>>
, ноitemsAttributes
, похоже, это всего лишь один словарь. Сначала удалите этоforeach
и назначьтеvar item = (Dictionary<string, object>)itemAttributes
.2. @Sinatr я совершил большую ошибку. большое спасибо. проблема была решена