内存操作IEnumerable<T>,使用SelectMany方法将集合中的两列转成一列,一行转两行

原始数据:

var originalList = new List<dynamic>()
            {
                new{ Name="张三",age=10,Title1="职业一",Title2="职业二"},
                new{ Name="李四",age=10,Title1="职业一",Title2="职业二"},
                new{ Name="王五",age=10,Title1="职业一",Title2="职业二"}
            };

  转为同一列值:

var currentList = originalList.SelectMany(p => new[] { p.Title1, p.Title2 }, (p, t) => new { p.Name, p.age, t }).ToList();

  结果:

public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)
resultSelector的func委托中,可以操作中间序列TCollection,达到最终效果图,在不适用sql语句union等操作时,内存中直接操作集合,此方法非常方便。

原文地址:https://www.cnblogs.com/yzhj/p/12202476.html

时间: 2024-08-29 07:54:20

内存操作IEnumerable<T>,使用SelectMany方法将集合中的两列转成一列,一行转两行的相关文章

在WPS或Excel中多列合并成一列合并后中间加空格或-或逗号的写法,可参照以下方法,wps与excel操作与用法都相同

使用文本连接符&就可以做到了.例如要将A列和B列的数据连接并以逗号分隔,显示在C列,可以在C1中输入以下公式=A1&","&B1公式输入完成后,将C1的内容向下填充即可. 如果是需要合并两列的内容,操作上则需要多几个步骤了,这里以A列和B列的数据连接为例,方法如下: 在原本的C列前面插入一列(左键点击C列的列标→右键→插入) 在C1中输入公式=A1&","&B1 将C1向下填充 选择C列,然后复制(右键→复制) 点击A列,鼠标

内存操作函数

为什么引入内存操作函数:在定义中字符串以NUL(空字节)结尾,所以字符串操作函数遇见'\0'停止.因此我们引入内存操作函数,来解决"非字符串类型"中遇到NUL(数字0)的情况. 内存操作函数:内存操作函数与字符串操作函数非常类似,只不过内存操作函数能够处理任何类型的字节序列.在内存操作函数的参数中,有一个显示的参数说明了要处理的字节数,所以他遇见NUL不会停下来. 下面介绍两种常用的内存操作函数原型: void *memcpy(void *dst,void const *src,siz

39-oc集合中对象的内存管理

集合中对象的内存管理 集合的内存管理原则是什么 当把一个对象添加到集合中时,这个对象会做了一次retain操作,计数器会+1 当一个集合被销毁时,会对集合里面的所有对象做一次release操作,计数器会-1 当一个对象从集合中移除时,会对这个对象做一次release操作,计数器会-1 集合方法的普遍规律是什么 如果方法名是add\insert开头,那么被添加的对象,计数器会+1 如果方法名是remove\delete开头,那么被移除的对象,计数器-1

《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的

0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助.

集合中list、ArrayList、LinkedList、Vector的区别、Collection接口的共性方法以及数据结构的总结

List (链表|线性表) 特点: 接口,可存放重复元素,元素存取是有序的,允许在指定位置插入元素,并通过索引来访问元素 1.创建一个用指定可视行数初始化的新滚动列表.默认情况下,不允许进行多项选择. 注意,这是 List(rows, false) 的一种便捷方法.还要注意,列表中的可视行数一旦创建就不能更改. public List(int rows)------------------row-----要显示的项数 2.创建一个初始化为显示指定行数的新滚动列表. 注意,如果指定了零行,则会按默

Jvm(39),class文件结构----- 方法表集合

类中定义的method方法是如何在class文件中组织的 method方法的表示-方法表集合在class文件的什么位置 类中的method方法的实现代码---即机器码指令存放到哪了,并初步了解机器指令 为什么没有在类中定义自己的构造函数,却可以使用new ClassName()构造函数创建对象 IDE代码提示功能的基本原理 1.概述 方法表集合是指由若干个方法表(method_info)组成的集合.对于在类中定义的若干个,经过JVM编译成class文件后,会将相应的method方法信息组织到一个

《Java虚拟机原理图解》6、 class文件中的方法表集合--method方法在class文件中是怎样组织的

0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助.

深入理解Java虚拟机笔记---方法表集合

方法表的结构与字段表一样,依次包含了访问标志(access_flags),名称索引(name_index),描述符索引(descriptor_index),属性表集合(attributes)几项,如下表所示: 因为volatile关键字和transient关键字不能修改方法,所以方法表的访问标志中没有了ACC_VOLATILE与ACC_TRANSIENT标志.与之相对的,synchronized, native, strictfp和abstract关键字可以修饰方法,所以方法表的访问标志中增加了

Linux操作系统性能调优的方法

Linux操作系统性能调优的方法 2013-03-18 15:35 HonestQiao ChinaUnix 字号:T | T Linux是一套免费使用和自由传播的类Unix操作系统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.本文分享了几种技巧对Linux操作系统进行性能的优化. AD:2014WOT全球软件技术峰会北京站 课程视频发布 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.