簡體   English   中英

如何將以下foreach嵌套循環轉換為LINQ?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM