Возвращение различий между двумя перечисляемыми объектами

Я пытаюсь определить различия между двумя коллекциями.

private ObservableCollection<SomeObject> _objectList = null;
private ObservableCollection<SomeObject> _cachedObjectList = null;

SomeObject реализует IEquatable

Я использую следующее, чтобы определить, есть ли какие-либо различия между моими двумя коллекциями:

this._objectList.ToList().OrderBy(x => x.Id).SequenceEqual(this._cachedObjectList.ToList().OrderBy(x => x.Id));
  • Коллекция _cachedObjectList не изменится.
  • Вы можете добавлять, удалять или изменять объект в коллекции _objectList.

Как я могу вернуть новый список, содержащий любой недавно добавленный, удаленный или иным образом измененный объект из двух коллекций.

Любая помощь будет принята с благодарностью!

Реализация IEquatable для SomeObject:

public class SomeObject : IEquatable<SomeObject>
{
        public int GetHashCode(SomeObject object)
        {
            return base.GetHashCode();
        }

        public bool Equals(SomeObject other)
        {
            bool result = true;


            if (Object.ReferenceEquals(other, null))
            {
                result = false;
            }

            //Check whether the compared objects reference the same data.
            if (Object.ReferenceEquals(this, other))
            {
                result = true;
            }
            else
            {
                // if the reference isn't the same, we can check the properties for equality
                if (!this.Id.Equals(other.Id))
                {
                    result = false;
                }

                if (!this.OtherList.OrderBy(x => x.Id).ToList().SequenceEqual(other.OtherList.OrderBy(x => x.Id).ToList()))
                {
                    result = false;
                }
            }

            return result;
        }
    }
}

EDIT: Мне нужны только изменения, если _objectList содержит измененный объект, основанный на IEquatable.Equals (), я бы хотел, чтобы он вернулся . В противном случае верните новые объекты или удаленные объекты в списке.

6
задан Michael G 3 November 2011 в 22:59
поделиться