EF GroupBy 根据key 分组 再把key求和(取决于每条数据中 arr的条数) arr 中有多少条数据 就把多少个key 加起来
List<A> alist = new List<A>{
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
,b=,c=,d=,e=},
}; //分组求 Key 的和
var alistarr = alist.GroupBy(a => new { a.name, a.a, a.b, a.c, a.d }); // 根据分组(Key) 有7条 // ‘a 为 name a b c d A 也就是A (name a b c d e) 每条里面都是个集合
var selec = alistarr.Select(a => new // a其实是 ‘a 与 A 组合 就是key - arr
{
a.Key.name, //获取 System.Linq.IGrouping<TKey,TElement> 的键。 Element(元素的意思 可以有多个元素)
//所有的Sum 都是要跟在集合后面的 a是 分组后的每条数据 (唯一key value(集合 arr) )
a = a.Sum(p => a.Key.a), // 每一条再求和 p是A (那个集合 arr的每个元素 A) 在这里没有用到
b = a.Sum(p => a.Key.b), // 所以就是 进去 集合 arr的每个元素 A 没用到 返回a.Key.b 就相当于arr中 有多少个元素 就加多少次 a.Key.b
c = a.Sum(p => a.Key.c), // 效果就是key的和 (根据key分组 再分组下(key arr) 取得每条 数据的 key的和) arr 中有多少条数据 就把多少个key 加起来
d = a.Sum(p => a.Key.d),
e = a.Sum(p => p.e), // a是 key - arr 在arr 中求e 的和
s = a.Sum(p => p.a) // a是 key - arr 在arr 中求a 的和 //每个A里面是有a的 上面是 arr长度个 a.Key.a 的和 这里是 arr 中求a 的和 因为分过组 所以arr 中具有相同a 而又都是arr 一个是arr长度 a.Key.a 之和 一个是arr 中a(和 key.a 相同)的和 所以 a和s 相同 一般不会这么写 逻辑混乱
}).ToList();
var alistarr2 = alist.GroupBy(a => new { a.name }).Select(a => new // 5条
{ // key - arr
a.Key.name,
a = a.Sum(p => p.a), // 根据name分组(5条 也可理解5组) 求每组中a的和
b = a.Sum(p => p.b),
c = a.Sum(p => p.c),
d = a.Sum(p => p.d),
e = a.Sum(p => p.e),
});
var alist3 = alist.GroupBy(a => new { a.name, a.a }).Select(a => new
{
a.Key.name,
a = a.Sum(p => p.a),
s = a.Sum(p => a.Key.a)
});
class A
{
public string name { get; set; }
public int a { get; set; }
public int b { get; set; }
public int c { get; set; }
public int d { get; set; }
public int e { get; set; }
}


EF GroupBy 根据key 分组 再把key求和(取决于每条数据中 arr的条数) arr 中有多少条数据 就把多少个key 加起来的更多相关文章
- EF GroupBy 分组 取某条的 总数
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- pandas 取 groupby 后每个分组的前 N 行
原始数据如下: (图是从 excel 截的,最左1行不是数据,是 excel 自带的行号,为了方便说明截进来的) 除去首行是标题外,有效数据为 28行 x 4列 目前的需求是根据 partition ...
- pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用
pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用 量化交易里, 需要进行大量的分组和统计, 以方便自己处优势的位置/机会. 比如对股价进行趋势分析, 波动性分析, 量 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- 利用 groupby apply list 分组合并字符
利用 groupby apply list 分组合并字符 因为需要对数据进行分组和合并字符,找到了以下方法. 有点类似 SQL 的 Group BY. import pandas as pd impo ...
- java8--List转为Map、分组、过滤、求和等操作----代码示例
Java 8 函数式编程风格 Java 迄今为止最令人激动的特征.这些新的语言特征允许采用函数式风格来进行编码,我们可以用这些特性完成许多有趣的功能.这些特性如此有趣以至于被认为是不合理的.他们说会影 ...
- poj 2253 一条路径中的最大边 再找出最小的
题目大意,有两只青蛙,分别在两个石头上,青蛙A想要到青蛙B那儿去,他可以直接跳到B的石头上,也可以跳到其他石头上,再从其他石头跳到B那儿,求青蛙从A到B的所有路径中最小的Frog Distance,我 ...
- MYSQL-实现ORACLE 和SQLserver数据中- row_number() over(partition by ) 分组排序功能
网上看见了好多例子都基本上是一样的,没有过多的解释,对于一个初学MySQL来说有点难,我把部分转摘过来如下 原文:http://www.cnblogs.com/buro79xxd/archive/20 ...
随机推荐
- oauth2-server-php-docs 存储 学说2
学说2 创建客户端和访问令牌存储 要把学说融入到你的项目中,首先要建立你的实体.我们先从客户端,用户和访问令牌模型开始: yaml YourNamespace\Entity\OAuthClient: ...
- 关于Promise的一些个人理解jQuery的deferred
一.什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组), ...
- Mockito各场景使用介绍
场景1:某三方接口所有方法都需要Mock 实现方式1-配置configrution bean 实现方式2-在application context中配置mock bean 场景2:某三方接口部分方法m ...
- CAD2006您没有足够的权限来安装本产品
在Win10的环境下安装CAD2006,可能会报错"您没有足够的权限来安装本产品". 解决方法是,右键以"兼容性疑难解答"运行 在弹出的对话框中,点击 &quo ...
- IEngineEditor接口的0x80004003错误
在定制ArcEngine数据编辑程序时,经常使用IEngineEditor 接口来完成开始.保存和停止编辑.但我遇到了一个问题,测试纠结了两天终于解决,我十分佩服自己.嘻嘻. 错误描述 使用IEngi ...
- python pdfplumber用于pdf表格提取
import pdfplumber with pdfplumber.open('test.pdf') as pdf: #page_count = len(pdf.pages()) p0 = pdf.p ...
- 数组的翻转(非reverse())
方法一: var arr = [1,2,3,4]; var arr2 = []; while(arr.length) { var num = arr.pop(); //删除数组最后一个元素并返回被删除 ...
- Qt 使用 net-snmp 包的过程记录
使用 C/C++ 进行 SNMP 开发,网上比较流行的主要是用 net-snmp 和 snmp++ .在 sourceforge 上以 Qt 和 snmp 为关键词进行搜索,搜到的项目 net-snm ...
- FTP在CentOS上安装与使用
安装: yum install -y vsftpd 相关配置文件: /etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件 /etc/vsftpd/ftpusers //黑名单, ...
- OpenCV学习代码记录——轮廓(contour)检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...