代码:
foreach (var item in items.Children)
{
RadTreeViewItem parent1 = new RadTreeViewItem();
parent1.Header = NodeHeader(item.Path, item.Name, SelectedPath, ProjectData);
parent1.Tag = item;
foreach (var child in item.Children)
{
RadTreeViewItem children = new RadTreeViewItem();
children.Header = NodeHeader(child.Path, child.Name, SelectedPath, ProjectData);
children.Tag = child;
parent1.Items.Add(children);
}
Parent.Items.Add(parent1);
}
物品。儿童和物品。儿童为ObservableCollection<>
parent1.标头和子项。标题为HeaderedItemsControl.Header
parent1.Tag和children。标签为FrameworkElement.Tag
如何将上面的foreach嵌套循环转换为LINQ?
LINQ。。。Language INtegrated(这里是关键点)查询。
你所做的不是一个疑问。将其留给foreach
循环;很好,很清楚,很明显。
特别是,各种集合上的.Items.Add
方法实际上并不是可以在LINQ中简单地重现的。你也许可以做到,但它会很难看,很难维持。你所拥有的一切都很好。如果你想为了改变而改变它,也许:
RadTreeViewItem parent1 = new RadTreeViewItem {
Header = NodeHeader(item.Path, item.Name, SelectedPath, ProjectData),
Tag = item
};
foreach (var child in item.Children)
{
parent1.Items.Add(new RadTreeViewItem {
Header = NodeHeader(child.Path, child.Name, SelectedPath, ProjectData),
Tag = child
});
}
Parent.Items.Add(parent1);
不完全是一个改进,IMO.