语句如下:
                var resumeList = db.ChannelResume.Where(model);
var groupValues = resumeList.GroupBy(t => new {t.AgentId, t.AgentName});
var statistics = groupValues.Select(c => new ResumeStatisticsViewModel()
{
Date = dateSpan,
AgentId = c.Key.AgentId,
AgentName = c.Key.AgentName,
TotalCount = c.Count(),
ValidCount = c.Count(k => k.Status == (int)ResumeStatus.Valid)
});
try
{
//statistics = statistics.OrderBy(c => c.AgentName);
var tmp = statistics.ToList(); }
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}

如上所示,针对GroupBy后的对象直接使用Select最后数据会返回错误,linq解析出来的sql语句中将AgentId,AgentName这两个分组条件没有作为临时表中的字段,导致最后整个sql语句执行报错:“Unknown column 'GroupBy1.K1' in 'field list'”

在网上查到了两个地址:

http://bugs.mysql.com/bug.php?id=46742

http://stackoverflow.com/questions/15083627/linq-mysql-group-by-year-month-day-select-year-month-day-count

不过没有看到解决方案。

后来尝试,直接对groupValues变量做foreach循环。

                var resumeList = db.ChannelResume.Where(model);
var groupValues = resumeList.GroupBy(t => new {t.AgentId, t.AgentName});
foreach (var item in groupValues)
{
var viewModel = new ResumeStatisticsViewModel()
{
Date = dateSpan,
AgentId = item.Key.AgentId,
AgentName = item.Key.AgentName,
TotalCount=item.Count(),
ValidCount = item.Count(t => t.Status == (int)ResumeStatus.Valid)
};
result.Add(viewModel);
} return new PagedList<ResumeStatisticsViewModel>(result, m.Page, m.PageSize);

这样正常执行,不报错了。

感觉是Linq Mysql GroupBy语句和Select结合使用存在bug。

后话,linq语句确实存在性能问题,如果不是拆分写代码太啰嗦,真的应该拆分,保持代码中对数据库的操作尽量短平快。

Linq Mysql GroupBy语句的问题处理的更多相关文章

  1. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  2. LINQ to SQL语句非常详细(原文来自于网络)

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...

  3. LINQ to SQL语句大全

    LINQ to SQL语句大全     LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判 ...

  4. 【转】LINQ to SQL语句(1)之Where

    Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形 ...

  5. 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  6. LINQ to SQL语句(7)之Exists/In/Any/All/Contains

    适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...

  7. LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods

    适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = ( from e in db.Employ ...

  8. MySQL的语句执行顺序

    MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入 ...

  9. strace追踪mysql执行语句

    一.strace参数 strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息.追踪程序运行时的整个生命周期,输出每一个系统调用的名字,参数,返回值和 ...

随机推荐

  1. java.lang.UnsupportedOperationException:This parser does not support specification "null" version "null"

    java.lang.UnsupportedOperationException: This parser does not support specification "null" ...

  2. Office 如何双面打印Word文档

    打印之前勾选手动双面打印,然后开始打印(不管当前文档有几页,要打印几份,会只打印奇数页面)   只要开始打印奇数页面,就会有一个弹出窗口,当完成之后把打印的东西拿出来,整个翻面再放回打印机,点击确定会 ...

  3. MSS与MTU的关系

    MSS与MTU的关系 TU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节. MSS:maximum segment size,最大分节大 ...

  4. 在k8s上部署第一个php应用

    一.搭建nginx+php 1.站点配置文件 1.1创建nginx-configmap.yaml [root@master k8s]# cat nginx-configmap.yaml apiVers ...

  5. jsp实现仿QQ空间新建多个相冊名称,向相冊中加入照片

    工具:Eclipse,Oracle,smartupload.jar.语言:jsp,Java:数据存储:Oracle. 实现功能介绍: 主要是新建相冊,能够建多个相冊,在相冊中加入多张照片,删除照片,删 ...

  6. Openerp开发进销存系统总结

    转自 :http://blog.sina.com.cn/s/blog_7cb52fa80101ngt8.html 差不多用了2个星期的闲余事件,对于openerp v7.0进行了学习和应用开发.细节总 ...

  7. js 获取当前时间并格式化

      js 获取当前时间并格式化 CreateTime--2018年2月7日11:04:16 Author:Marydon 方式一 /** * 获取系统当前时间并格式化 * @returns yyyy- ...

  8. (二)Luence——代码实现索引及搜索

    完成需求:使用Lucene完成对数据库中图书信息的索引和搜索功能. 1. 环境准备及工程搭建 1.1 环境准备 mysql5.5+java8+lucene4.10.3(目前最新7.0.1,这里够用就好 ...

  9. Swift的String与OC的NSString的区别

    Swift的String类型是值类型.如果你创建了一个新的字符串值,那么当其进行常量.变量赋值操作或在函数/方法中传递时,会进行值拷贝. 在不同的情况下,都会对已有字符串值创建新的副本,并对该新副本进 ...

  10. easy ui datagrid 数据分页

    参照easyui官方网站提供的demo写了个datagrid数据分页的demo, 具体参数我就不一一罗列了,详细见官方网站, 这里只介绍一下具体的注意事项和常乃用到的几项, $('#test').da ...