zoukankan      html  css  js  c++  java
  • c# 集合的合并

    命题是:有一个集合,形如List<string>() { "AAA", "BBB", "CCC", "DDD", "EEEE", "FFF" }。要求将集合分成三个子集合,每个子集合里面包含两个旧元素和两个空格,空格放在每个旧元素的后面。代码表示为{ "AAA","", "BBB",""}、{ "CCC","", "DDD",""}、{ "EEEE","", "FFF",""}

    最后的实现代码为:

    List<string> list = new List<string>() { "AAA", "BBB", "CCC", "DDD", "EEEE", "FFF" };
    int cnt = 3;
    List<string[]> res = new List<string[]>();
    for (int k = 0; k < 2; k++)
        res.Add(list.Skip(k * cnt).Take(cnt).Select(x => new string[] { x, "" }).Aggregate(
            (x, y) => x.Concat(y).ToArray()));

    其中res为最终需要返回的结果。

    在这段代码中,我用了四个LinQ的扩展方法。Skip,Take,Select和Aggregate。第一个函数Skip的意思是跳过N个元素,返回剩下的。它得到{ "AAA", "BBB" ,"CCC", "DDD","EEEE", "FFF"}以及{"CCC", "DDD","EEEE", "FFF"}和{"EEEE", "FFF"}

    第二个函数Take的意思为从头开始,返回N个连续的元素。它会得到{ "AAA", "BBB" },{"CCC", "DDD"},{"EEEE", "FFF"}

    第三个函数Select的意思是“通过合并元素的索引将序列中的每个元素投影到新表中”。本实例中的作用是返回每个元素+空格的阵列。本步骤后会得到{string[]{"AAA",""}, string[]{"BBB",""}},{string[]{"CCC",""},string[]{"DDD",""},},{string[]{"EEEE",""},string[]{"FFF",""}}

    最后一个函数Aggregate的作用是针对返回的阵列的集合进行内部运算合并成字符串的阵列。

    此时将会返回{string[]{ "AAA","", "BBB",""}、string[]{"CCC","", "DDD",""}、string[]{ "EEEE","", "FFF",""}}

    到此,我想要的结果即实现了。

    欢迎交流和纠正。

  • 相关阅读:
    快速排序算法图文详解(模版使用)
    数据库中事务和隔离级别解析
    详解对象的创建,布局,定位,存活判断
    SpringCloud-Ribbon:认识并配置负载均衡
    SpringCloud-Feign:接口式微服务调用
    SpringCloud-Eureka(3)集群配置和了解CAP原则
    SpringCloud-Eureka(2)服务注册与信息配置
    SpringCloud-Eureka(1)认识Eureka和初步配置
    Promise
    es6
  • 原文地址:https://www.cnblogs.com/icyJ/p/List_Aggregate.html
Copyright © 2011-2022 走看看