我有两个相同类类型的列表。类的属性为:
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
}
这应该会给你想要的:
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);