如何编辑嵌套集合中的项目

问题描述 投票:0回答:0

我有组(ObservableCollection 类型) 每组包含一个项目(集合类型)。

我有一个组集合(ObservableCollection 类型)每个组都有一个项目集合(ObservableCollection 类型) 每个项目都有自己的项目集合(ObservableCollection 类型)同样,每个项目都有一个项目集合,并以相同的方式继续嵌套。 我需要编辑所有可用项目(在所有集合中)的一些属性。 由于其嵌套和复杂的性质,我不能这样做,我只能一步完成

myGroup.Groups.SelectMany(g => g.Items).ToList().ForEach(item =>
{
    item = FixItem(item);
});

foreach (var group in myGroup.Groups)
{
    if (!Groups.Any(g => g.Title == group.Title))
    {
        Groups.Add(group);
    }
}

如何编辑所有集合/子项/子集合中的所有项目并以更快的速度和性能执行此操作?


更新一:

我找到了下面的解决方案,有没有可能比这段代码写得更好更快?

FixItemInGroups(myGroup.Groups);

foreach (var group in myGroup.Groups)
{
    if (!Groups.Any(g => g.Title == group.Title))
    {
        Groups.Add(group);
    }
}

private void FixItemInGroups(ObservableCollection<Group> groups)
{
    foreach (var group in groups)
    {
        foreach (var item in group.Items)
        {
            FixItem(item);
            FixItemInItems(item.Items);
        }

        FixItemInItems(group.Items);
    }
}
private void FixItemInItems(ObservableCollection<Item> items)
{
    foreach (var item in items)
    {
        FixItem(item);
        FixItemInItems(item.Items);
    }
}
c# linq nested-loops nested-lists observablecollection
© www.soinside.com 2019 - 2024. All rights reserved.