【发布时间】: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