[英]How to convert the following foreach nested loop to LINQ?
码:
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);
}
items.Children和item.Children是ObservableCollection<>
parent1.Header和children.Header是HeaderedItemsControl.Header
parent1.Tag和children.Tag是FrameworkElement.Tag
如何将上述foreach嵌套循环转换为LINQ?
LINQ ...语言集成(这是关键位) Query 。
您在做什么不是查询。 保留foreach
循环; 很好,很明显,很明显。
特别是,您可以在LINQ中轻松复制各种集合上的.Items.Add
方法。 您可能可以做到,但是它很难看而且很难维护。 你所拥有的一切都很好。 如果您想为更改而更改它,也许:
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,不完全是一种改进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.