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",""}}

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

    欢迎交流和纠正。

  • 相关阅读:
    BooStrap4文档摘录: 1. Layout
    PistgreSQL9.6手册(基础摘录)
    HTML 5与CSS 3权威指南(第3版·上册)
    Excel PPT 2013办公应用从入门到精通
    EclipseWTPWeb应用开发
    Photoshop移动UI设计实用教程(第2版)
    高手速成:EDIUS专业级视频与音频制作从入门到精通
    黑客攻防从入门到精通
    利用Python进行数据分析(原书第2版)
    Linux二进制分析
  • 原文地址:https://www.cnblogs.com/icyJ/p/List_Aggregate.html
Copyright © 2011-2022 走看看