Exemple #1
0
        }//---метод Inverse

        #endregion

        #region Async ListExt

        /*
         * [NonSerialized]
         * private AsyncOperation asyncOp = null;
         *
         * private void CreateAsyncOp()
         * {
         *  // Create the AsyncOperation to post events on the creator thread
         *  asyncOp = AsyncOperationManager.CreateOperation(null);
         * }
         *
         * protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
         * {
         *  // Post the CollectionChanged event on the creator thread
         *  asyncOp.Post(RaiseCollectionChanged, e);
         * }
         *
         * private void RaiseCollectionChanged(object param)
         * {
         *  // We are in the creator thread, call the base implementation directly
         *  base.OnCollectionChanged((NotifyCollectionChangedEventArgs)param);
         * }
         *
         * protected override void OnPropertyChanged(PropertyChangedEventArgs e)
         * {
         *  // Post the PropertyChanged event on the creator thread
         *  asyncOp.Post(RaisePropertyChanged, e);
         * }
         *
         * private void RaisePropertyChanged(object param)
         * {
         *  // We are in the creator thread, call the base implementation directly
         *  base.OnPropertyChanged((PropertyChangedEventArgs)param);
         * }*/
        #endregion

        #region Статические методы
        /// <summary>
        /// Инвертирует полученную коллекцию
        /// </summary>
        /// <param name="collection">Принимает коллекцию</param>
        /// <returns>Возвращает инвертированную коллекцию</returns>
        public static T[] Inverse(IEnumerable <T> collection)
        {
            ListExt <T> tmp_send = new ListExt <T>();

            for (int i = collection.Count() - 1; i >= 0; i--)
            {
                tmp_send.Add(collection.ElementAt(i));
            }

            return(tmp_send.ToArray());
        } //---метод Inverse
Exemple #2
0
        } //---метод RemoveRange

        /// <summary>
        /// Инвертирует текущую коллекцию
        /// </summary>
        /// <returns>Возвращает инвертированную текущую коллекцию</returns>
        public ListExt <T> Inverse()
        {
            ListExt <T> tmp_send = new ListExt <T>();

            for (int i = this.Count() - 1; i >= 0; i--)
            {
                tmp_send.Add(this.ElementAt(i));
            }

            return(tmp_send);
        }//---метод Inverse
Exemple #3
0
        } //---метод Inverse

        /// <summary>
        /// Возвращает коллекцию, соответствующую указанному условию.
        /// </summary>
        /// <param name="collection">Коллекция для проверки.</param>
        /// <param name="predicate">Условие для проверки коллекции.</param>
        /// <returns>Возвращает коллекцию, соответствующую указанному условию.</returns>
        public static T[] FindRange(IEnumerable <T> collection, Func <T, bool> predicate)
        {
            ListExt <T> tmp_send = new ListExt <T>();

            foreach (T model in collection)
            {
                if (predicate(model))
                {
                    tmp_send.Add(model);
                }
            }

            return(tmp_send.ToArray());
        }
Exemple #4
0
        } //---метод FindLast

        /// <summary>
        /// Возвращает коллекцию, соответствующую указанному условию.
        /// </summary>
        /// <param name="predicate">Условие для проверки коллекции.</param>
        /// <returns>Возвращает коллекцию, соответствующую указанному условию.</returns>
        public ListExt <T> FindRange(Func <T, bool> predicate)
        {
            ListExt <T> tmp_send = new ListExt <T>();

            foreach (T model in this)
            {
                if (predicate(model))
                {
                    tmp_send.Add(model);
                }
            }

            return(tmp_send);
        } //---метод FindRange
Exemple #5
0
        } //---метод FindRange

        /// <summary>
        /// Перетасовывает элементы коллекции.
        /// </summary>
        /// <returns>Возвращает перетасованную копию коллекции.</returns>
        public ListExt <T> Shuffle()
        {
            int[]       tmp_index   = new int[this.Count];
            ListExt <T> tmp_shuffle = new ListExt <T>();

            for (int i = 0; i < this.Count; i++)
            {
                tmp_index[i] = i;
            }

            for (int index = 0, step = tmp_index.Length; index < tmp_index.Length; index++, step--)
            {
                int tmp_rand = new Random().Next(step);
                tmp_shuffle.Insert(0, this[tmp_index[tmp_rand]]);
                tmp_index[tmp_rand] = tmp_index[step - 1];
            }

            return(tmp_shuffle);
        } //---метод Shuffle