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. Azure DevOps Server(TFS 2019) 中的SonarQube扫描任务出现错误:AppTest.java can't be indexed twice

    SonarQube错误描述 将一个Maven示例程序导入到Azure DevOps的待库中,执行SonarQube扫描过程时, DevOps Server提示下面的错误信息: [ERROR] Fail ...

  2. 使用python来批量抓取网站图片

    今天"无意"看美女无意溜达到一个网站,发现妹子多多,但是可恨一个page只显示一张或两张图片,家里WiFi也难用,于是发挥"程序猿"的本色,写个小脚本,把图片扒 ...

  3. SoftWareHelper

    SoftWareHelper 环境 Visual Studio 2017,.Net Framework 4.0 SDK GitHub源码:https://github.com/yanjinhuagoo ...

  4. .NET MVC 学习笔记(五)— Data Validation

    .NET MVC 学习笔记(五)—— Data Validation 在实际应用中,我们需要对数据进行增查改删业务,在添加和修改过程中,无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...

  5. Fiddler工具使用介绍三

    我们知道Fiddler是位于客户端和服务器之间的代理,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试web应用.修改请求的数据,甚至可以修改 ...

  6. 27_网络编程-初识socket

    一.C/S B/S 架构         1.定义             (1)C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Cl ...

  7. tomcat 启动 证书异常java.io.IOException: Alias name [cas] does not identify a key entry

    在搭建CAS server的过程中,Tomcat开启https,配置秘钥证书,证书是通过keytool生成的 <Connector port=" protocol="org. ...

  8. mysql数据库崩溃:InnoDB: Database page corruption on disk or a failed

    修改mysql配置文件my.cnf,添加 innodb_force_recovery = 6 innodb_purge_thread = 0 重启mysql 这时只可以执行select,create, ...

  9. 判断一个类是否为另一个类的实例 instanceof关键字和isAssignableFrom方法的区别

    Which of the following is better? a instanceof B or B.class.isAssignableFrom(a.getClass()) The only ...

  10. odoo开发笔记:Server+Action服务器动作自动触发执行

           Odoo的市场定位是SME(中小型企业),这个市场的ERP产品,多如牛毛,产品各具特色.不过,Odoo的自动化处理机制,可以睥睨天下,无人能及.包括一些大型国产软件,如用友.金蝶也不具备 ...