C # заполнить treeview с помощью Linq

#c# #asp.net #linq #treeview

#c# #asp.net #linq #просмотр дерева

Вопрос:

я использую этот код для заполнения моего treeview

 var query = data.GroupBy(item => item.Column1)
                .Select(group => group.GroupBy(item => item.Column2))
                .Select(group => group.Select(innerGroup => 
                    innerGroup.GroupBy(item => item.Column3)));
  

и эти предварительные коды

 foreach (var outermostGroup in query)
{
    //add node for outermostGroup's key
    foreach (var middleGroup in outermostGroup)
    {
        //add child node of the above node for middleGroup key
        foreach (var innerGroup in middleGroup)
        {
            //add child node of the above node for innerGroup key
        }
    }
}
  

но я получаю ошибку, пытаясь получить ключ из outermostgroup и middleGroup Key, но не из InnerGroup, я не знаю, что происходит.
например.

 foreach (var outermostGroup in query)
    {
      var node= new System.Web.Ui.WebControls.TreeNode(outermostGroup.Key)//here doesnt reconize me the key
        foreach (var middleGroup in outermostGroup)
        {
           var node= new System.Web.Ui.WebControls.TreeNode(middleGroup.Key)//here doesnt reconize me the key
            foreach (var innerGroup in middleGroup)
            {
                var node= new System.Web.Ui.WebControls.TreeNode(innerGroup.Key)//here recononize me the Key
            }
        }
    }
  

Ответ №1:

Вам нужно написать что-то вроде этого:

 foreach (var outermostGroup in data.GroupBy(item => item.Column1))
{
    var node1 = new System.Web.Ui.WebControls.TreeNode(outermostGroup.Key);
    foreach (var middleGroup in outermostGroup.GroupBy(group => group.Column2))
    {
          var node2 = new System.Web.Ui.WebControls.TreeNode(middleGroup.Key);
          foreach (var innerGroup in middleGroup.GroupBy(group => group.Column3))
          {
              var node3 = new System.Web.Ui.WebControls.TreeNode(innerGroup.Key);
          }
    }
}