ExtensionMethod.NET Home of 880 C#, Visual Basic, F# and Javascript extension methods

UpdateCollection

Updates items from the collection using a modified version of this collection. Useful in MVVM scenarios needing cancellable edition and delayed persistence.

Source

public static void UpdateCollection<T>(this ICollection<T> originalCollection, ICollection<T> updatedCollection)
{
    if (originalCollection.IsReadOnly)
    {
        throw new InvalidOperationException("Cannot update a read-only collection.");
    }

    Collection<T> oldItems = new Collection<T>();
    Collection<T> newItems = new Collection<T>();

    foreach (var originalItem in originalCollection)
    {
        if (!updatedCollection.Contains(originalItem))
        {
            oldItems.Add(originalItem);
        }
    }

    foreach (var updatedItem in updatedCollection)
    {
        if (!originalCollection.Contains(updatedItem))
        {
            newItems.Add(updatedItem);
        }
    }

    foreach (var oldItem in oldItems)
    {
        originalCollection.Remove(oldItem);
    }

    foreach (var newItem in newItems)
    {
        originalCollection.Add(newItem);
    }
}

Example

ObservableCollection<Uri> links = new ObservableCollection<Uri>(originalLinks)

...

// Do some operations on the collection

...

originalLinks.UpdateCollection(links);

Author: Lionel Ringenbach

Submitted on: 13 okt. 2011

Language: C#

Type: System.Collections.Generic.ICollection<T>

Views: 5225