Как получить древовидные родительские и дочерние узлы в словаре - PullRequest
0 голосов
/ 11 февраля 2019

Пожалуйста, помогите мне получить все проверенные узлы древовидной структуры в словаре, где ключ проверяется родительским узлом, а значение - список проверенных дочерних узлов, используя запрос linq с использованием c #.

1 Ответ

0 голосов
/ 12 февраля 2019

Предполагая, что у вас есть только один уровень потомка для каждого родителя, вы можете создать метод Extension следующим образом.

public static class Extensions
{
        internal static IEnumerable<KeyValuePair<string,IEnumerable<string>>> GetSelectedList(this TreeNodeCollection tr)
        {
            var childCollection = new List<string>();
            foreach (var trNode in tr.OfType<TreeNode>())
            {
                if (!trNode.Checked) continue;

                childCollection.Clear();
                childCollection.AddRange(trNode.Nodes.OfType<TreeNode>().Where(x => x.Checked).Select(x=>x.Text));

                yield return new KeyValuePair<string, IEnumerable<string>>(trNode.Text, childCollection);

            }
        }
    }

Теперь вы можете использовать его следующим образом.

var selectedData = treeview.Nodes.GetSelectedList().ToDictionary(x => x.Key, y => y.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...