GroupBy根据多个字段分组使用方式:


一、使用扩展方法



  1. query.GroupBy(q => new { q.Year, q.Month })
  2. .Select(q => new
  3. {
  4. Year = q.Key.Year,
  5. Month = q.Key.Month,
  6. BuildAmount = q.Sum(i => i.BuildAmount),
  7. RecAmount = q.Sum(i => i.RecAmount),
  8. Amount = q.Sum(i => i.Amount),
  9. RealAmount = q.Sum(i => i.RealAmount)
  10. });

query.GroupBy(q => new { q.Year, q.Month })
.Select(q => new
{
Year = q.Key.Year,
Month = q.Key.Month,
BuildAmount = q.Sum(i => i.BuildAmount),
RecAmount = q.Sum(i => i.RecAmount),
Amount = q.Sum(i => i.Amount),
RealAmount = q.Sum(i => i.RealAmount)
});

二、Linq方式


  1. var query = from l in list
  2. group l by new { l.Name, l.BatNum } into g
  3. select new
  4. {
  5. Name = g.Key.Name,
  6. Count = g.Sum(a => a.Count),
  7. BatNum = g.Key.BatNum
  8. };

        var query = from l in list
group l by new { l.Name, l.BatNum } into g
select new
{
Name = g.Key.Name,
Count = g.Sum(a => a.Count),
BatNum = g.Key.BatNum
};

三、生成KeyValue类型



  1. Dictionary<string,decimal> buildList = _build.FindList().GroupBy(q => q.SaleCode)
  2. .Select(q => new { Code = q.Key, ReaAmount = q.Sum(i => i.RealAmount) })
  3. .ToDictionary(q => q.Code, q => q.ReaAmount);

1)单个字段Group by:

  1. //a.Key类型与a.Province字段类型一样
  2. .GroupBy(a => a.Province).Select(a => a.Key).ToList();
//a.Key类型与a.Province字段类型一样
.GroupBy(a => a.Province).Select(a => a.Key).ToList();

2)多个字段Group by:

  1. //此时返回的数据列表需要自己转换
  2. .GroupBy(a => new { a.Date, a.Week }).Select(a => a.Key).ToList();
//此时返回的数据列表需要自己转换
.GroupBy(a => new { a.Date, a.Week }).Select(a => a.Key).ToList();

3)单个字段Order by:

  1. .OrderBy(a => a.Date).ToList()
.OrderBy(a => a.Date).ToList()

4)多个字段Order by:

  1. .OrderBy(a => a.Date).ThenBy(a => a.EndTime).ThenBy(a => a.StartTime).ToList()
.OrderBy(a => a.Date).ThenBy(a => a.EndTime).ThenBy(a => a.StartTime).ToList()

5)多个字段Order by倒序:

  1. .OrderByDescending(a => a.Date).ThenByDescending(a => a.EndTime).ThenByDescending(a => a.StartTime).ToList()
.OrderByDescending(a => a.Date).ThenByDescending(a => a.EndTime).ThenByDescending(a => a.StartTime).ToList()
 



http://blog.csdn.net/u011127019/article/details/54943303


原文出处:http://www.itdos.com/CSharp/20150409/0153322.html

 

EF 求和 GroupBy多个字段的更多相关文章

  1. Ef数据GroupBy多字段查询Vb.net与c#参考

    Dim g = lst.Data.GroupBy(Function(T) New With { Key T.mName, Key T.mUnit, Key T.mPrice }).Select(Fun ...

  2. EF架构~mysql中时间戳字段被认为是主键自增

    回到目录 如果在mysql中添加了自增字段,用来维护行的版本,那么在EF中会有一个问题,会把它当成是数据表主键,当你的真正主键是自曾时,就会把默认值0拼到生成的SQL语句里,导致你的insert出错, ...

  3. EF只更新变化的字段

    摘要 在使用EF的时候,由于表字段较多,所以在更新的时候,想要只更新变化的字段,有没有办法呢? 解决办法 代码片段 public async Task<int> UpdateAsync(T ...

  4. 【EF】EntityFramework 更新数据库字段的三种方法

    实体类 public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public Tes ...

  5. EF中多表公共字段,以及设置EntityBase使所有实体类继承自定义类

    使用EF框架访问数据库时,如果某些表具有公共字段,例如在审核流程中,对于各类申请单资料的创建人.创建时间.修改人.修改时间,这些可能多表都需要的字段,如果在每个实体中进行赋值操作显然是类似和重复的,下 ...

  6. EF之DataBase添加新字段

    数据库中表添加新字段后,在EF的xml格式的中找到与表名相同的节点添加新字段 (SSDL.CSDL和C-S都要添加相关信息)

  7. EF中GroupBy扩展方法的简单使用

    public ActionResult ShopInfo() { ViewBag.ShopList = ShopService.GetEntities(x => x.IsDelete == fa ...

  8. linq to entity GroupBy多个字段

    var items = _voteRecordRepository.GetAll() .Where(x => programIds.Contains(x.ProgrammeId)) .Group ...

  9. 关于EF查询表里的部分字段

    这个在项目中用到了,在网上找了一下才找到,留下来以后自已使用. List<UniversalInfo> list =new List<UniversalInfo>(); lis ...

随机推荐

  1. leetcode 152. 乘积最大子序列 java

    题目: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. ...

  2. [ZJOI2010]基站选址(线段树优化dp)

    坑待填. \(Code\ Below:\) #include <bits/stdc++.h> #define lson (rt<<1) #define rson (rt< ...

  3. centos7上mysql5.6版本主从复制

    做主从复制实验: 第一步:主服务器上操作 1.修改主服务器master: [root@localhost ~]# vim /etc/my.cnf server_id = 1  //[必须]服务器唯一I ...

  4. Elasticsearch集群搭建及使用Java客户端对数据存储和查询

    本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计. 一.Elastic集群搭建 1. 环境准备. 该集群环境基于VMware虚拟机.CentOS ...

  5. POJ 2887

    #include <iostream> #include <string> #define MAXN 2000 using namespace std; struct node ...

  6. [Umbraco] 入门教程(转)

    如在页面上显示Helloword. 设计:在umbraco里,最基础的一个概念是文档类型(document type),每个文档其实可以看成一个页面类型.比如我们要创建的两个页面,每个页面都需要显示自 ...

  7. TypeScript设计模式之装饰、代理

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  8. odoo开发环境搭建(一):安装VMware Workstation

    odoo开发环境搭建(一):安装VMware Workstation

  9. android 回调函数使用简介

    //1---定义回调函数 public interface GirdMenuStateListener { void onSuccess(); void onError(); } //2---使用的地 ...

  10. DWZ中刷新dialog的方案解决

    在DWZ中进行ajax表单提交后,通过回调函数来返回状态结果,以及返回是否需要刷新父页的navTabId. DWZ给我们提供了两个回调函数,一个是子窗口为navTab的navTabAjaxDone,一 ...