首页 > 编程语言 >C# 随机分组 | 集合分组 | 集合(列表、数组)分成几组

C# 随机分组 | 集合分组 | 集合(列表、数组)分成几组

时间:2022-12-31 09:11:45浏览次数:49  
标签:ToList C# List list var item 分组 集合

直接上代码:

/// <summary>
/// 随机分组
/// </summary>
/// <param name="list">列表集合</param>
/// <param name="GroupCount">组数</param>
/// <returns></returns>
public static List<List<string>> RandomizedGroupingArray(List<string> list, int GroupCount = 1)
{
    //打乱
    Random random = new Random();
    list = list.OrderBy(x => random.Next()).ToList();

    //分组
    var groups = list
                .Select((item, index) => new { Item = item, GroupIndex = index % GroupCount })
                .GroupBy(item => item.GroupIndex, (key, group) => group.Select(groupItem => groupItem.Item).ToList())
                .ToList();

    return groups;
}

测试结果:

namespace Test
{
    public class Program
    {
        public static void Main(string[] args)
        {
            List<string> list = new List<string>()
            {
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
            };

            //分成3组
            var result = RandomizedGroupingArray(list,3);

            int groupIndex = 1;
            foreach (var item in result)
            {
                Console.WriteLine($"第{groupIndex}组");
                foreach (var item2 in item)
                {
                    Console.WriteLine(item2);
                }
                Console.WriteLine();
            }
        }

        /// <summary>
        /// 随机分组
        /// </summary>
        /// <param name="list">列表集合</param>
        /// <param name="GroupCount">组数</param>
        /// <returns></returns>
        public static List<List<string>> RandomizedGroupingArray(List<string> list, int GroupCount = 1)
        {
            //打乱
            Random random = new Random();
            list = list.OrderBy(x => random.Next()).ToList();

            //分组
            var groups = list
                        .Select((item, index) => new { Item = item, GroupIndex = index % GroupCount })
                        .GroupBy(item => item.GroupIndex, (key, group) => group.Select(groupItem => groupItem.Item).ToList())
                        .ToList();

            return groups;
        }
    }
}

标签:ToList,C#,List,list,var,item,分组,集合
From: https://www.cnblogs.com/cqpanda/p/17013549.html

相关文章

  • Codeforces Round #841 (Div. 2) and Divide by Zero 2022
    题目链接A核心思路:就是一个简单的找规律大胆去猜结论就好了。#include<iostream>#include<algorithm>usingnamespacestd;typedeflonglongLL;constintN=1e6......
  • 关于echarts使用的一些tips
    本文总结一下关于echarts使用的一些小技巧,助力显示样式更美观 1、饼图设置可滚动图例有时图表中的图例太多,一行放不下,此时可使用滚动图例,如下图例不可滚动图例可滚......
  • 【题解】P3158 [CQOI2011]放棋子
    兄弟们,我起了,一日之计在于晨呐。题意P3158[CQOI2011]放棋子有一个\(n\)行\(m\)列的棋盘和\(c\)种颜色的棋子,每种棋子有\(a_i\)个。要求不同颜色的棋子不能放......
  • 再打包到不同的product中,生成对应场景的APP
    HUAWEIDevEcoStudio是开发HarmonyOS应用及服务的一站式集成开发环境。本次分享DevEcoStudio3.1上线的新特性-差异化构建打包,定制多目标构建产物。 很多应用需要根据......
  • 如何使用 Blackbox Exporter 监控 URL?
    前言监控域名和URL是可观察性的一个重要方面,主要用于诊断可用性问题。接下来会详细介绍如何使用BlackboxExporter和Prometheus在Kubernetes中实现URL监控。Bl......
  • Codeforces Good Bye 2022: 2023 is NEAR
    题目传送门:CodeforcesGoodBye2022:2023isNEAR。目录A.KoxiaandWhiteboardsA.KoxiaandWhiteboardsB.KoxiaandPermutationC.KoxiaandNumberTheoryD.Kox......
  • gnu_tools: gnu tools( GCC / Binutils )
    gnu_tools: gnutools(GCC/Binutils)    1.GCC:https://gcc.gnu.org/onlinedocs/ 1.1.CPP: TheCPreprocessor(MACRO):https://......
  • C# 事件
    前言本文只是为了复习,巩固,和方便查阅,一些知识点的详细知识会通过相关链接和文献标记出来。为什么要用事件要考虑这个问题之前,首先要知道使用委托的缺点,先看下面几段代码......
  • Selenium59-设计conftest
    pytest的conftest文件conftest文件的作用:一个专门存放fixture的配置文件。多个测试用例文件(test_*.py)的所有用例都需要用到一个前置/后置操作,如登陆退出,浏览器......
  • odoo CacheMiss 错误
    在进行调拨时遇到错误,stock.quant(12345,).product_uom_id然后没有其他任何提示,这种错误就比较难定位,到处打断点才定位到错误的位置,odoo针对计算字段compute,relat......