通过引用从两个列表中删除对象

时间:2019-01-25 15:19:50

标签: c# list linq

我有一个像这样的2类课程:

class Item1
{
}


class Item2
{
    public Item1 item;

    public Item2(Item1 it){
        item = it;
    }
}

然后我有一个包含Item1的列表:

List<Item1> item1list;

还有另一个包含Item2的列表:

List<Item2> item2list;

我做了这样的列表:

var it = new Item1();
item1list.Add(it);
item2list.Add(new Item2(it));

现在,我只想从item1list中删除一个元素,并丢失item2list中的引用(获取空值),就像这样:

item1list.Remove(it); // item1list lost the element
item2list.Select(i => (search query)) // Gives a null result

现在,item2list保留了我的Item1对象的副本。

1 个答案:

答案 0 :(得分:1)

我重命名了您的班级(因为我的头拒绝了一个名为“ Item1”的班级)。所以,这是您的原始类,稍有修改:

class Class1 {}

class Class2 {
    public Class1 Item { get; }

    public Class2(Class1 item) {
        Item = item;
    }
}

然后是一些使用它们的代码:

 var itemList1 = new List<Class1>();
 var itemList2 = new List<Class2>();

 var item1 = new Class1();
 var item2 = new Class2(item1);

 itemList1.Add(item1);
 itemList2.Add(item2);

 //you could put this in a method and do it as a single operation:
 itemList1.Remove(item1);
 itemList2.RemoveAll(i => i.Item == item1);