C# 使用 Linq 填充 TreeView

标签 c# asp.net linq treeview

我正在使用这段代码来填充我的 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代码

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
        }
    }
}

但是我在尝试从最外层组和中间组 key 中获取 key 时出现错误,而不是从内部组中获取 key ,我不知道发生了什么。 例如。

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
            }
        }
    }

最佳答案

你需要这样写:

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);
          }
    }
}

关于C# 使用 Linq 填充 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538566/

相关文章:

c# - 断言 C#(社交)单元测试不使用 HTTP

c# - 比较 NUnit 中两个对象之间的相等性

asp.net - WebResource.axd 空白或未找到

c# - 带有"is"和“否”选项的确认框,在下拉列表中选择索引更改

asp.net - 如何将大数据导出到Excel

c# - 如何从 1 个特定页面的布局中删除 HTML 元素?

实体的 linq - 包含 lambda 表达式

扩展/方法中的 C# Linq

c# - SequenceEqual 的 IEqualityComparer

c# - Azure 服务总线 - 唯一支持的隔离级别是 'IsolationLevel.Serializable'