请帮助我获取字典中所有树状视图的选中节点,其中,键是选中的父节点,值是使用linq查询(使用c#)选中的子节点的列表。
答案 0 :(得分:1)
假设每个父级只有一个孩子,则可以按照以下方法创建扩展方法。
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);