0

我有以下代码,我需要在其中创建要与列表绑定的节点和子节点。我正在将它转换为数组,然后我试图添加,但我没有做到这一点我应该怎么做?以下是我的代码:

foreach (var item in ProductCategory)
{
    TreeNode tr = new TreeNode(item.CatName);
    List<dataObject> lst = objFreecusatomization.GetAllCustomItems(CategoryType.Dressing, item.CategoryID);
    TreeNode[] sumItemList =new TreeNode[lst.Count];

    foreach (var subItem in lst)
    {
        sumItemList[sumItemList] = new TreeNode { Name = subItem.Name, Text = subItem.Name, Checked = subItem.Selected };
    }

    treeCustomItem.Nodes.Add(item.CatName, sumItemList);
}

而且我还需要为要添加的项目分配键值、名称。通过 LinQ 或 lambda 表达式。最好的方法是什么?

4

1 回答 1

2

这将失败: sumItemList[sumItemList] = new TreeNode ... 数组的索引不能是数组本身。

由于您没有索引器(因为 foreach),我建议您使用列表,如下所示:

foreach (var item in ProductCategory)
{
    TreeNode treeCustomItem = new TreeNode(item.CatName);
    List<dataObject> lst = objFreecusatomization.GetAllCustomItems(CategoryType.Dressing, item.CategoryID);
    List<TreeNode> sumItemList = new List<TreeNode>();

    foreach (var subItem in lst)
    {
        sumItemList.Add(new TreeNode { ... });
    }

    treeCustomItem.Nodes.AddRange(sumItemList.ToArray());
}

但是由于您已经在迭代获取的子项,因此您也可以直接添加子项,而不是使用数组/列表。您的内部 foreach 将变为:

foreach (var subItem in lst)
{
    treeCustomItem.Nodes.Add(new TreeNode { ... });
}
于 2013-08-14T11:04:19.673 回答