从泛型列表的列表中删除条目

本文关键字:列表 删除 泛型 | 更新日期: 2023-09-27 18:03:14

我有一个像这样的模型类

    public class InterestList
{
    public string id { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    public List<Interest> interests { get; set; }
}
public class Interest
{
    public string id { get; set; }
    public int sortOrder { get; set; }
    public string name { get; set; }
    public string categoryName { get; set; }
    public string categoryId { get; set; }
}

和一个对象private List<InterestList> _interestlist;保存我的数据。

你可以看到_interestlist包含Interestlist命名为interests,现在我想删除它的单个条目。我如何用Linq实现这一点?

我已经试过了

   _interestlist.RemoveAll(x => x.id == "1234");

但是它只删除interests而不删除Interest。有谁能指出正确的方法吗?

从泛型列表的列表中删除条目

从技术上讲,您有一个列表的列表,几乎就像您有List<List<Interest>>一样。要解决这个问题,您需要在集合上执行foreach,并在内部列表上执行Remove操作。

foreach(InterestList interestList in _interestlist)
{
    interestList.interests.RemoveAll(x => x.id == "1234");
}

您也可以使用List<T>

内置的ForEach方法
_interestlist.Foreach(i => i.interests.RemoveAll(x => x.id == "1234"));

代码:

_interestlist.ForEach(i => i.interests.RemoveAll(x => x.id == "1234"));

将删除在_interestlist中id = "1234"的任何InterestList对象中包含的兴趣列表中的所有对象。