ObservableCollectionExtension

摘要:ObservableCollectionExtension

之前寫Window Phone 7時,用ObservableCollection物件為了方便寫的擴充方法。

由於沒碰Window 8所以不知道.NET 4.5是否有類似的方法已被新增

namespace Yos.Dev.Ext
{
    public static class ObservableCollectionExtension
    {
        public static bool Exists(this ObservableCollection collection, Predicate predicate)
        {
            bool exists = false;
            foreach (T item in collection)
            {
                exists = predicate.Invoke(item);
                if (exists)
                    break;
            }
            return exists;
        }
        public static void ForEach(this ObservableCollection collection, Action action)
        {
            foreach (T item in collection)
            {
                action.Invoke(item);
            }
        }
        public static T Find(this ObservableCollection collection, Predicate predicate)
        {
            foreach (T item in collection)
            {
                if (predicate.Invoke(item))
                    return item;
            }
            return default(T);
        }
        public static ObservableCollection FindAll(this ObservableCollection collection, Predicate predicate)
        {
            ObservableCollection result = new ObservableCollection();

            collection.ForEach(item =>
            {
                if (predicate.Invoke(item))
                    result.Add(item);
            }); 

            return result;
        }
    }
}