如何将以下foreach嵌套循环转换为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);
}

物品。儿童和物品。儿童为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.

相关内容

  • 没有找到相关文章

最新更新