Как получить список ключей из набора списка свойств с парами ключ-значение

У меня есть коллекция списка свойств с парами ключ-значение, как показано на скриншоте в Visual Studio.

введите здесь описание изображения

ОБНОВИТЬ:

У меня есть следующий снимок экрана, если я использую значение (0) на приведенном выше снимке экрана.

введите здесь описание изображения

Как я могу получить список (список (строки) может быть?) с ключевыми значениями из этого?

Например, новый список будет содержать {Идентификатор, Имя класса, Имя, Фамилия, Доб}. Не нужно ничего фильтровать.

Огромное спасибо


person lawphotog    schedule 18.06.2013    source источник


Ответы (2)


Если ваш список представляет собой набор пар KeyValue, вы можете не просто перебирать эту коллекцию и создавать новый список строк, представляющих Key

   Dim l2 As New List(Of String)
    For Each kvp As KeyValuePair(Of String, String) In res(0)
        l2.Add(kvp.Key)
    Next
person T Kelly    schedule 18.06.2013
comment
Спасибо пользователю 1702721. Приведенный выше код не работает. Сбор списка пар ключ-значение — лучшее описание, которое у меня есть. Я действительно не знаю, что это такое, поэтому я прикрепил скриншот выше. Сможете разобраться со скриншота? - person lawphotog; 18.06.2013
comment
Вы взаимодействуете с VB? Можете ли вы расширить элемент _values ​​(0), чтобы увидеть, что там доступно? - person T Kelly; 18.06.2013
comment
Odd..._values ​​определенно выглядит как набор пар KeyValue. Я изменил свое предыдущее предложение, не могли бы вы попробовать. - person T Kelly; 18.06.2013
comment
Спасибо .. ему не нравится res(0) .. не может скомпилироваться. ошибка expression is of type "propertybag" which is not a collection type - person lawphotog; 18.06.2013
comment
Ok. Есть ли шанс, что мы могли бы получить список членов пакета свойств типа объекта? - person T Kelly; 19.06.2013
comment
OH Спасибо за вашу помощь, но я думаю, что теперь я сдался. Этот объект находится в сборке. - person lawphotog; 19.06.2013

Вот пример. В этом примере ключ для каждой KeyValuePair является строкой, но это может быть не всегда, поэтому существует явный .ToString() на случай, если ключи другого типа.

Dim myList As New List(Of KeyValuePair(Of String, Object))
' add stuff to myList here

Dim keyList as List(Of String)
For Each item In myList
    keyList.Add(item.Key.ToString())
Next item

РЕДАКТИРОВАТЬ: Попробуйте это:

' add stuff to myList here

Dim keyList as List(Of String)
For Each entry in res
    For Each item In entry._values
            keyList.Add(item.Key.ToString())
    Next item
Next Entry
person Douglas Barbin    schedule 18.06.2013
comment
Привет Дуглас, Спасибо за ваш ответ. Но я не получаю .Key из элемента в моем списке. Можете ли вы понять, что это за список по скриншоту? - person lawphotog; 18.06.2013
comment
Попробуй это сейчас. Похоже на какой-то пользовательский тип. - person Douglas Barbin; 18.06.2013
comment
Спасибо, Дуглас, это действительно неприятная коллекция пользовательского списка свойств. у нас есть прогресс, но он еще не работает. Я получил сообщение об ошибке, в котором говорится, что entry._values ​​недоступен, потому что это Friend. Я не могу изменить это, потому что это в dll. Теперь я заметил маленькую иконку ключа рядом с _values ​​на скриншоте. Есть ли у меня еще какой-нибудь вариант? - person lawphotog; 18.06.2013
comment
Если это друг, то я считаю, что вам не повезло. Это означает, что он доступен только из сборки, где он объявлен (т. е. ваш .DLL). - person Douglas Barbin; 18.06.2013
comment
Спасибо, Дуглас. Теперь я понимаю немного больше. Но я все еще могу привязать весь список к сетке. И, прочитав столбцы gridview, я получу список, который хотел, но так много дополнительных шагов. - person lawphotog; 19.06.2013