Как получить данные из ListView в формате словаря в C # winforms - PullRequest
1 голос
/ 04 ноября 2010

У меня есть ListView элемент управления, как

listview

и Dictionary

Dictionary<String,List<String>> MyDict

мне нужно заполнить словарь данными в ListView

Так что словарь будет похож на

{ "S.No."  { "1","2","3" } }
{" A" {"A1", "", "" } }
{" B" {"B1", "B2", "" } }
{" C" {"C1", "C2", "C3" } }

используя вложенный цикл for, мы сделаем это. Но есть ли способ сделать это с помощью LINQ?

1 Ответ

3 голосов
/ 04 ноября 2010

Используйте метод ToDictionary:

Dictionary<string, List<string>> dict =
    listView.Items
            .Cast<ListViewItem>()
            .ToDictionary(
                item => item.Text,
                item => item.SubItems
                            .Cast<ListViewItem.ListViewSubItem>()
                            .Select(subItem => subItem.Text)
                            .ToList());

EDIT

ОК, я неправильно понял вопрос ... Это должно сработать:

Dictionary<string, List<string>> dict =
    listView.Columns
            .Cast<ColumnHeader>()
            .ToDictionary(
                c => c.Text,
                c => listView.Items
                             .Cast<ListViewItem>()
                             .Select(i => i.SubItems[col.Index].Text)
                             .ToList());

(это работает, потому что подэлемент с индексом 0 фактически является тем, который владеет другими подэлементами)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...