我如何才能遍历两个集合,找出其中一个集合中的对象而不是另一个集合
本文关键字:集合 另一个 一个 对象 遍历 两个 | 更新日期: 2023-09-27 18:27:03
我有以下类:
public ObjectiveDetail()
public int ObjectiveDetailId { get; set; }
public int Number { get; set; }
public string Text { get; set; }
public override bool Equals(object obj)
{
return this.Equals(obj as ObjectiveDetail);
}
public bool Equals(ObjectiveDetail other)
{
if (other == null)
return false;
return this.Number.Equals(other.Number) &&
(
this.Text == other.Text ||
this.Text != null &&
this.Text.Equals(other.Text)
);
}
}
我有两个ICollection集合:
ICollection<ObjectiveDetail> _obj1; // Reference
ICollection<ObjectiveDetail> _obj2; // May have more, less or different objectDetails from the reference.
集合的公共字段是ObjectiveDetailId。如何使用for循环遍历集合以获得以下行:
- 在_obj2而不是_obj1中
- 在_obj1而不是_obj2
- _obj1和_obj2之间不同
注意,这与我之前问的另一个问题类似,但我认为现在我添加了Equals方法,这会简单一些。
您可以使用foreach
foreach(ObjectiveDetail obj in _obj1)
{
if (!(_obj2.Contains(obj)))
//add to list
}
只需更改if语句和ICollection中的逻辑,即可获得其余结果。