分组通用方法

Posted zhuwansu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分组通用方法相关的知识,希望对你有一定的参考价值。

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

 

以上是关于分组通用方法的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段

Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段

如何使用滚动片段容器实现通用布局?

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

能够使用相同的字段扩展所有 Apollo/GraphQL 突变。通缉“通用片段”

Oracle通用函数,分组函数,子查询