.NET C# List 工具方法


1.工具類

public static class ListExtensions
    {
        /// <summary>
        /// 無序或有序的ListT獲取所有匹配對象的方法
        /// </summary>
        public static IEnumerable<T> GetAll<T>(this List<T> list, T searchValues)
        {
            return list.Where(p => p.Equals(searchValues));
        }

        /// <summary>
        /// 無序或有序的ListT獲取所有匹配對象次數的方法
        /// </summary>
        public static int CountAll<T>(this List<T> list, T searchValues)
        {
            return list.GetAll(searchValues).Count();
        }

        /// <summary>
        /// 有序的ListT獲取所有匹配對象的方法,要求List必須是有序的,否則返回的結果是錯誤的
        /// </summary>
        public static T[] BinarySearchGetAll<T>(this List<T> list, T searchValues)
        {
            List<T> result = new List<T>();

            //查找符合條件的第一個元素
            int center = list.BinarySearch(searchValues);
            if (center > 0)
            {
                //添加入結果集合
                result.Add(list[center]);

                //往左查找
                int left = center;
                while (left > 0 && list[left - 1].Equals(searchValues))
                {
                    left -= 1;
                    result.Add(list[left]);
                }

                //往右查找
                int right = center;
                while (right < list.Count - 1 && list[right + 1].Equals(searchValues))
                {
                    right += 1;
                    result.Add(list[right]);
                }

            }
            return result.ToArray();
        }


        /// <summary>
        /// 有序的ListT獲取所有匹配對象次數的方法,要求List必須是有序的,否則返回的結果是錯誤的
        /// </summary>
        public static int BinarySearchCountAll<T>(this List<T> list, T searchValues)
        {
            return list.BinarySearchGetAll(searchValues).Length;
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM