请教 List 类型的合并写法?

问题描述

//我有以下自定义类型publicclasstheTypeNameMsg{publicstringtheTypeName{set;get;}//姓名publicdoubleKuCun{set;get;}//库存数量publictheTypeNameMsg(stringT_theTypeName,doubleT_KuCun){theTypeName=T_theTypeName;KuCun=T_KuCun;}}List<theTypeNameMsg>t1=newList<theTypeNameMsg>(){newtheTypeNameMsg("小明",95),newtheTypeNameMsg("张三",91)};List<theTypeNameMsg>t2=newList<theTypeNameMsg>(){newtheTypeNameMsg("小明",80),newtheTypeNameMsg("张三",82),newtheTypeNameMsg("李四",77)};List<theTypeNameMsg>t3=........//合并t1和t2,相同姓名合并一起,且库存相加,t3最终结果只有3个元素,即:("小明",175)、("张三",173)和("李四",77),请教一个简洁的写法

解决方案

解决方案二:
vart3=t1.Union(t2).GroupBy(g=>g.theTypeName).Select(s=>newtheTypeNameMsg(s.Key.theTypeName,s.Sum(m=>m.KuCun)).ToList();
解决方案三:
引用1楼qqamoon的回复:

vart3=t1.Union(t2).GroupBy(g=>g.theTypeName).Select(s=>newtheTypeNameMsg(s.Key.theTypeName,s.Sum(m=>m.KuCun)).ToList();

运行不了啊
解决方案四:
最笨的办法,用foreach遍历,
解决方案五:
publicstaticvoidMain(string[]args){//测试数据List<Student>s1=newList<Student>(){newStudent(){name="1",score=10},newStudent(){name="2",score=20},newStudent(){name="3",score=30},};List<Student>s2=newList<Student>(){newStudent(){name="1",score=10},newStudent(){name="2",score=20},newStudent(){name="3",score=30},};//合并varq=s1.Concat(s2).GroupBy(x=>x.name).Select(x=>newStudent{name=x.Key,score=x.Sum(y=>y.score)});//打印显示foreach(variteminq){Console.WriteLine(item.name+"----"+item.score);}Console.ReadLine();}//测试类publicclassStudent{publicstringname{get;set;}publicintscore{get;set;}}

解决方案六:
vart3=t1.Union(t2).GroupBy(p=>p.theTypeName).Select(p=>newtheTypeNameMsg(p.Key,p.Sum(item=>item.KuCun))).ToList();

解决方案七:
引用2楼marklr的回复:

Quote: 引用1楼qqamoon的回复:
vart3=t1.Union(t2).GroupBy(g=>g.theTypeName).Select(s=>newtheTypeNameMsg(s.Key.theTypeName,s.Sum(m=>m.KuCun)).ToList();

运行不了啊

噢噢噢噢~~~我手打的,在s.Sum(m=>m.KuCun))后面少了个括号
解决方案八:
vart3=t1.Concat(t2).GroupBy(a=>a.theTypeName).Select(g=>newtheTypeNameMsg(g.Key,g.Sum(b=>b.KuCun))).ToList();

解决方案九:
用foreach吧,简单。linq搞复杂了
解决方案十:
usingSystem.Linq;List<theTypeNameMsg>t3=t1.Union(t2).GroupBy(g=>g.theTypeName).Select(s=>newtheTypeNameMsg(s.Key,s.Sum(m=>m.KuCun))).ToList();

解决方案十一:
varquery=fromxint1.Concat(t2)groupxbyx.theTypeNameintogselectnewtheTypeNameMsg(g.Key,g.Sum(a=>a.KuCun));vart3=query.ToList();

解决方案十二:
引用1楼qqamoon的回复:

vart3=t1.Union(t2).GroupBy(g=>g.theTypeName).Select(s=>newtheTypeNameMsg(s.Key.theTypeName,s.Sum(m=>m.KuCun)).ToList();

是这样的。写成sql形式,更清晰一些。特别是比这个查询还复杂时。
解决方案十三:
引用8楼drifter2002的回复:

用foreach吧,简单。linq搞复杂了

groupby其实是一个很标准的最基础的语句,如果觉得复杂,那就肯定没怎么学linq。
解决方案十四:
fromingroupbyselect这种代码即美观又好理解,已经非常不错了,就别再foreach了

时间: 2024-09-29 04:34:50

请教 List 类型的合并写法?的相关文章

请教double 类型数据的问题!~~~~~~

问题描述 doubled=7/19*24为什么结果是0.0啊???计算器里按出来是8.8......请教一下! 解决方案 解决方案二:可能是这样吧编译器把7和19当作int型进行计算,把结果转化成double类型然后*24你这样:doubled=7.0/19.0*24结果应该是你想要的解决方案三:"/"的结果与被除数和除数的类型有关,7/19*24这样做的结果是int型的这样试下doubled=(double)7/19*24;

请教一个自动计算触发器的写法

问题描述 问题是这样的:oracle数据库有一个分数表 fenshu(fs1,fs2,fs3)有一个权值表 quanzhi(qz1,qz2)实现触发器:往分数表里面插入或更新fs1,fs2,要能自动更新fs3数据.fs3=fs1*qz1+fs2*qz2请问这个触发器该怎么实现? 解决方案 权值表只有一条记录么?是的话试下下面的sql:create or replace trigger trig_updateFenshu      after insert on fenshu for each r

C#合并多个结构一样的Excel

有多个结构一样的Excel,带复杂表头需要合并为一个,且去掉多余的表头数据,可以用COM组件来读取每个Excel表格的Range来合并到一个新的表格中.样例如图 有很多相同格式的表格,合并代码如下: 1.using System; 2.using System.Collections.Generic; 3.using System.Text; 4.using System.Reflection; 5.using Excel = Microsoft.Office.Interop.Excel; 6.

深入Java虚拟机——类型装载、连接(转)

来自http://hi.baidu.com/holder/item/c38abf02de14c7d31ff046e0     Java虚拟机通过装载.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.其中,装载就是把二进制形式的Java类型读入Java虚拟机中:而连接就是把这种已经读入虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去.连接阶段分为三个子步骤--验证.准备和解析."验证"步骤确保了Java类型数据格式正确并且适于Java虚拟机使用而&quo

Scala入门到精通——第二十二节 高级类型 (一)

作者:摇摆少年梦 视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 this.type使用 类型投影 结构类型 复合类型 1. this.type使用 class Person{ private var name:String=null private var age:Int=0 def setName(name:String)={ this.name=name //返回对象本身 this } def setAge(age:Int)={ this.a

单聊和群聊可以合并吗,类似微信

问题描述 单聊和群聊和离合并像微信一样吗,或者说群组可不可以像讨论组一样 解决方案 合并成讨论组?环信有单聊,群聊,还有聊天室,每种类型不能合并,可以看下群组和聊天室,能不能满足您的需求.解决方案二:推送合并不了解决方案三:也就是说必须分开咯,单聊和群聊

php array_merge 数组合并函数

array_merge ( PHP 4中, PHP 5中) array_merge -合并一个或多个数组 描述 数组array_merge (数组$ array1 [ ,数组$ array2 [ ,数组$ ... ] ] ) 合并内容的一个或多个阵列共同的价值观,这样的一个被附加到年底以前.返回所产生的数组. 如果输入数组有相同的字符串键,那么以后的价值的关键将覆盖前一个.然而,如果数组包含数字键,后来价值不会覆盖原来的价值,但将附加. 如果只有一个阵列,给出了数值数组索引,钥匙获得reinde

图解css3:核心技术与案例实战

 Web开发技术丛书 图解CSS3:核心技术与案例实战 大 漠 著 图书在版编目(CIP)数据 图解CSS3:核心技术与案例实战/大漠著. -北京:机械工业出版社,2014.7 (Web开发技术丛书) ISBN 978-7-111-46920-9 I. 图- II.大- III. 网页制作工具 IV. TP393.092 中国版本图书馆CIP数据核字(2014)第116144号 图解CSS3:核心技术与案例实战 大 漠 著 出版发行:机械工业出版社(北京市西城区百万庄大街22号 邮政编码:100

图解css3:核心技术与案例实战. 3.1 CSS3边框简介

3.1 CSS3边框简介 border属性在CSS1中就已经定义了,使用它可以设置元素的边框风格,例如设置不同的边框颜色以及粗细.在详细介绍CSS3边框运用之前,先简单回顾边框属性. 3.1.1 边框的基本属性 CSS1和CSS2中的边框属性其实很简单,其主要包括三个类型值. border-width:设置元素边框的粗细. border-color:设置元素边框的颜色. border-style:设置元素边框的类型. 在实际中可以将上面三个属性合并在一起,其缩写的语法: border: bord