如果列表B中的项目不在列表A中,则对该项目采取行动

本文关键字:项目 列表 如果 | 更新日期: 2023-09-27 17:58:15

我有两个相同类类型的列表。类的属性为:

 public string Name { get; set; }
 public string Severity { get; set; }
 public DateTime DetectedMissingUTC { get; set; }
 public DateTime DetectedMissingLocal { get; set; }

考虑列表a包含以下内容的情况:

[0] Item.Name = "Bob"
[1] Item.Name = "Rob"

列表B包含:

[0] Item.Name = "Bob"
[1] Item.Name = "Rob"
[2] Item.Name = "Robert"

我想对[2] Item.Name = "Robert"做点什么,因为它是一个新条目。我如何对此进行编码?在胡言乱语的伪代码术语我需要:

foreach (var ListB.item NOT IN ListA)
{
  Do something with item
}

如果列表B中的项目不在列表A中,则对该项目采取行动

这应该会给你想要的:

foreach (var  item in ListB.Where(x => !ListA.Any(a => a.Name == x.Name))
{
    ...
}

如果您想将所有项目添加到仅存在于ListB中的listA,您可以执行:

ListA.AddRange(ListB.Where(x => !ListA.Any(a => a.Name == x.Name));

这就是我要做的。如果你不知道如何定义CustomEqualityComparer,只需谷歌IEqualityComparer

foreach (var item in ListB.Except(ListA, new CustomEqualityComparer())
{
    item.DoSomething();
}

您可以这样做:

var newItem = ListB.Select(c => c.Name).Except(ListA.Select(c = c.Name));
//make use of your new item.
Console.Write(newItem.Name);