我如何才能遍历两个集合,找出其中一个集合中的对象而不是另一个集合

本文关键字:集合 另一个 一个 对象 遍历 两个 | 更新日期: 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中的逻辑,即可获得其余结果。