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 加起来的更多相关文章

  1. EF GroupBy 分组 取某条的 总数

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. pandas 取 groupby 后每个分组的前 N 行

    原始数据如下: (图是从 excel 截的,最左1行不是数据,是 excel 自带的行号,为了方便说明截进来的) 除去首行是标题外,有效数据为 28行 x 4列 目前的需求是根据 partition ...

  3. pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用

    pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用 量化交易里, 需要进行大量的分组和统计, 以方便自己处优势的位置/机会. 比如对股价进行趋势分析, 波动性分析, 量 ...

  4. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

  5. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  6. 利用 groupby apply list 分组合并字符

    利用 groupby apply list 分组合并字符 因为需要对数据进行分组和合并字符,找到了以下方法. 有点类似 SQL 的 Group BY. import pandas as pd impo ...

  7. java8--List转为Map、分组、过滤、求和等操作----代码示例

    Java 8 函数式编程风格 Java 迄今为止最令人激动的特征.这些新的语言特征允许采用函数式风格来进行编码,我们可以用这些特性完成许多有趣的功能.这些特性如此有趣以至于被认为是不合理的.他们说会影 ...

  8. poj 2253 一条路径中的最大边 再找出最小的

    题目大意,有两只青蛙,分别在两个石头上,青蛙A想要到青蛙B那儿去,他可以直接跳到B的石头上,也可以跳到其他石头上,再从其他石头跳到B那儿,求青蛙从A到B的所有路径中最小的Frog Distance,我 ...

  9. MYSQL-实现ORACLE 和SQLserver数据中- row_number() over(partition by ) 分组排序功能

    网上看见了好多例子都基本上是一样的,没有过多的解释,对于一个初学MySQL来说有点难,我把部分转摘过来如下 原文:http://www.cnblogs.com/buro79xxd/archive/20 ...

随机推荐

  1. [Functional Programming] Using Last monoid with Maybe

    Imaging we have a deck of cards, eveytimes we need to pick one card from deck, the result we want to ...

  2. UltraISO制作U盘启动盘安装Win7/9/10系统攻略

    U盘安装好处就是不用使用笨拙的光盘,光盘还容易出现问题,无法读取的问题.U盘体积小,携带方便,随时都可以制作系统启动盘. U盘建议选择8G及以上大小的. 下面一步一步讲解如果制作U盘安装盘: 1.首先 ...

  3. nova network工作原理及配置

    1. nova network简介 网络管理和配置是云计算中一项非常重要的功能.nova自带的nova-network实现了一些基本的网络模型,允许虚拟机之间的相互通信及虚拟机对internet的访问 ...

  4. 一道Javascript面试题引发的血案

    文章首发于szhshp的第三边境研究所,转载请注明 先来看几道面试题,公司的开发们都尝试做了一下,然而基本没有人能够全部答对. 覆盖的考点很多,也有一些难度,题目挺有意思建议手动执行一边玩玩. Que ...

  5. SQL Server如何进行时间比较的代码

    例子: datediff(dd,add_time,getdate()) not between 0 and 7 select count(*) from table where DATEDIFF ([ ...

  6. asp.net时间类-格式-方法应用

    一.当前日期+时间DateTime.Now c#/asp.net通过DateTime.Now这个类来获取当前的时间. DateTime dt = DateTime.Now; 2013/10/24 10 ...

  7. LoadRunner基于HTML-based script和URL-based script方式录制的区别和各自的使用场景

    一.区别: 为了更加直观的区别这两种录制方式,我们可以分别使用这两种方式录制同一场景(打开百度首页)然后进行对比,录制的代码如下: HTML-based script方式打开百度首页: Action( ...

  8. in文件

    in文件: 被调用的配置文件

  9. JUC-线程八锁

    1,一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待, 换句话说,某一个时刻内,只能有唯一一个线程去访 ...

  10. codevs 1862 最长公共子序列(求最长公共子序列长度并统计最长公共子序列的个数)

    题目描述 Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y ...