码迷,mamicode.com
首页 > 其他好文 > 详细

分组通用方法

时间:2019-01-10 13:07:12      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:var   remove   site   list   class   res   UNC   tin   color   

    public class GroupHelper
    {
        public class ListGroup
        {
            public static List<List<object>> Group(List<object> source, Func<List<object>, bool> limitFunc)
            {
                return Group<object>(source, limitFunc);
            }

            /// <summary>
            /// 分组
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="source"></param>
            /// <param name="limitFunc">项限制</param>
            /// <returns></returns>
            public static List<List<T>> Group<T>(List<T> source, Func<List<T>, bool> limitFunc)
            {
                var remainder = source.ToList();
                var result = new List<List<T>>();

                List<T> resItem = null;

                foreach (var item in source.Except(remainder))
                {
                    remainder.Add(item);
                    if (resItem == null)
                    {
                        resItem = new List<T> { item };
                    }
                    resItem.Add(item);
                    resItem = resItem.Distinct().ToList();
                    if (!limitFunc(resItem.ToList()))
                    {
                        resItem.Remove(item);
                        result.Add(resItem);
                    }
                }

                if (resItem != null)
                {
                    result.Add(resItem);
                }

                return result;
            }
        }
    }

 

分组通用方法

标签:var   remove   site   list   class   res   UNC   tin   color   

原文地址:https://www.cnblogs.com/zhuwansu/p/10249150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!