从通用列表的列表中删除条目

时间:2014-05-14 13:26:54

标签: c# linq

我有一个像这样的模型类

    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包含一个名为list的{​​{1}} Interest,现在我想删除它的一个条目。我怎样才能用Linq实现这个目标?

我试过像

interests

但它仅移除了 _interestlist.RemoveAll(x => x.id == "1234"); 而不是interests。任何人都可以指出正确的方法吗?

2 个答案:

答案 0 :(得分:7)

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

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

您还可以使用ForEach

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

答案 1 :(得分:5)

此代码:

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

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