繁体   English   中英

将所有与另一个列表中的项目不相等的项目添加到列表中

[英]Add all items to a list that are not equal to items in another list

我有一个清单:

baseList

还有另一个清单:

relatedList

我想将relatedItems添加到relatedList ,但只添加那些在baseList不存在相baseList项目。

我在想类似的东西:

    foreach (var baseItem in baseList)
    {
         relatedList.AddRange(GetRelatedItems(baseItem)).Except(x => x in baseList);
    }

要么

    foreach (var baseItem in baseList)
    {
         relatedList.AddRange(GetRelatedItems(baseItem)).Except(x => x.id not in baseList);
    }

但是我不知道如何使它工作。

尝试这样的事情:

foreach (var baseItem in baseList)
{
    relatedList.AddRange(GetRelatedItems(baseItem)).Except(x => baseList.Where(y => x.id == y.id);
}

要么

foreach (var baseItem in baseList)
{
    relatedList.AddRange(GetRelatedItems(baseItem)).Except(x => baseList.Where(y => x.id != y.id);
}

您可以为此目的使用Contains()方法,例如

relatedlist.Where(i => !relatedItemsList.Contains(i))

您可以使用Union和SelectMany linq方法:

relatedList = relatedList.Union(baseList.SelectMany(baseItem => GetRelatedItems(baseItem)));

编辑:对不起,我太快读了您的问题,并假定relatedList是字符串列表。 若要对对象使用Union方法,则必须为您的类编写IEqualityComparer。

class MyComparer : IEqualityComparer<MyClass>
{
    public bool Equals(MyClass x, MyClass y)
    {
        return x.id == y.id;
    }

    public int GetHashCode(MyClass item)
    {
        return item.id.GetHashCode();
    }
}

relatedList = relatedList.Union(baseList.SelectMany(baseItem => GetRelatedItems(baseItem)), new MyComparer());

您可以在调用addRange之后使用relatedList.Distinct().toList() Distinct删除重复的元素。 希望这可以帮助 :)

添加项目到列表<object><div id="text_translate"><p>我是 OOPS 的新手。 我想将项目添加到对象列表</p><pre>Class ABC { int a; int b; int c;} List<ABC> listabc = new List<ABC>();</pre><p> 我无法将 object 的所有三个属性添加在一起,因为它们是在不同时间获取的,但我希望它们成为同一个 object 的一部分,例如:我有不同的调用将其添加到列表中</p><pre>listabc.Add(new ABC {a = 10}); listabc.Add(new ABC {b = 20}); listabc.Add(new ABC {c = 30}); listabc.Add(new ABC {a = 40}); listabc.Add(new ABC {b = 50}); listabc.Add(new ABC {c = 60});</pre><p> 我希望这是 ({10,20,30},{40,50,60}) 而不是这将添加 ({10,0,0},{0,20,0},{0,0,30} ,{40,0,0},{0,50,0},{0,0,60}) 我应该如何将它添加到列表中?</p></div></object>

[英]Add items to List<object>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM