• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

.NETC#ListT工具方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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;
        }
    }


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#反射发布时间:2022-07-14
下一篇:
linux终端下敲ctrl-c时,到底发生了什么?(转)发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap