【问题标题】:How to delete an items inside a list nested by a field如何删除由字段嵌套的列表中的项目
【发布时间】:2013-07-17 23:17:19
【问题描述】:

我在删除列表时遇到问题。

想象一下这两条记录是这样的。

Item1:ID = 1001,Name="A",依赖 = 1,Order=1.00

Item2:ID = 2354,Name="B",依赖 = 1,Order=1.01

它们通过依赖关系以某种方式链接起来,网页中的视觉效果就像一个元素嵌套在另一个元素中。我一直在尝试在前端删除此记录。数据库级别没问题。这件事是为了避免我用来从我的集合中删除元素并进行数据绑定刷新的数据库往返。但是现在,我的元素嵌套了,我不知道必须这样做。

我匆忙尝试了这个,没有看到列表修改的问题。

        this.Entity.Items.Remove(this.CurrentItem);
        foreach(Item item in this.Entity.Items)
        {
            if(item.Dependency == this.CurrentItem.Depedency){
                this.Entity.Items.Remove(item);
            }
        }
        myRepeater.DataSource = this.Entity.Items
        myRepeater.DataBind();

然后我做了

        this.Entity.Items.ToList().RemoveAll(x => x.Depedency == this.CurrentItem.Dependency);
        myRepeater.DataSource = this.Entity.Items
        myRepeater.DataBind();

但是 ToList() 会重新创建一个新列表,这不会删除同一列表中的任何内容 Items是Entity内部的一个集合(List)

请不要修改实体结构或数据库。

【问题讨论】:

  • 什么是Entity,什么是Item,你覆盖Equals了吗?
  • 还有Items 是什么类型以及为什么你限制自己就地修改它们?
  • Entity 是类似于 Person 的对象,而 Items 是该对象内部的集合,即 Person.Childs。不,我没有覆盖 Equals。 Item 是该集合中的单数。 foreach(Person.Childs 中的子子)
  • @MaximusDecimus:然后覆盖它,你会很高兴。
  • 天啊,非常感谢...如果我知道该怎么做,我就没有问这个问题!请帮忙

标签: c# list collections nested removeall


【解决方案1】:

您可以使用 for 循环而不是 for each。

你也可以试试

myRepeater.DataSource = this.Entity.Items.ToList().RemoveAll(x => x.Depedency == this.CurrentItem.Dependency);

【讨论】:

    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 2015-04-06
    • 2020-12-21
    • 2018-12-30
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多