我有以下代码,我需要创建要与列表绑定的节点和子节点。 我正在将它转换为数组然后我想添加,但我没有这样做我应该怎么做?以下是我的代码:
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表达式。什么是最好的方式?
答案 0 :(得分:1)
这将失败:sumItemList [sumItemList] = new TreeNode ...数组的索引不能是数组本身。
由于你没有索引器(因为foreach),我建议你使用List,如下所示:
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 { ... });
}