Linq Mysql GroupBy语句的问题处理
语句如下:
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语句的问题处理的更多相关文章
- 年终巨献 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
- LINQ to SQL语句非常详细(原文来自于网络)
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
- LINQ to SQL语句大全
LINQ to SQL语句大全 LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判 ...
- 【转】LINQ to SQL语句(1)之Where
Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形 ...
- 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
- LINQ to SQL语句(7)之Exists/In/Any/All/Contains
适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...
- LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = ( from e in db.Employ ...
- MySQL的语句执行顺序
MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入 ...
- strace追踪mysql执行语句
一.strace参数 strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息.追踪程序运行时的整个生命周期,输出每一个系统调用的名字,参数,返回值和 ...
随机推荐
- cannot be cast to javax.servlet.Filter 报错, 原因servlet-api.jar冲突
使用maven开发web应用程序, 启动的时候报错: jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: jav ...
- 百度编辑器上传大视频报http请求错误怎么办
百度编辑器UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码,所以受到很多开放人员的青睐.但是有时 ...
- XP系统如何把桌面图标变大
右击桌面,属性,外观,高级,在项目里面找到图标,大小改为你喜欢的样式. 我测试的结果是:图标大小改为42,字体大小改为8,图标垂直间距改为100,水平间距改为54效果不错.
- ZOJ 2604 Little Brackets DP
DP: 边界条件:dp[0][j] = 1 递推公式:dp[i][j] = sum{dp[i-k][j] * dp[k-1][j-1] | 0<k≤i} i对括号深度不超过j的,能够唯一表示为( ...
- vi/vim 查找替换命令
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian ...
- hdu1350Taxi Cab Scheme (最小路径覆盖)
Taxi Cab Scheme Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- struts2中 JFreeChart使用
添加3个包 struts2-jfreechart-plugin-2.3.16.3.jar jcommon-1.0.16.jar jfreechart-1.0.13.jar struts.xml中配置 ...
- 使用Nexus创建私服
原文链接:http://www.cnblogs.com/helong/articles/2254446.html 注意:nexus2.6.0版本以后不支持jdk6了,必须jdk1.7或以上. 参考:h ...
- 为什么说Kindle难圆“中国梦”? 支撑Kindle模式成功的要素,在当下中国并不太具备
http://www.huxiu.com/article/12993/1.html 6月7日更新:Kindle入华终于尘埃落定,苏宁将在下午4点在北京30家店面同时销售,首批产品为Kindle Pap ...
- JBOSS 中oracle-ds.xml的配置模板
http://blog.csdn.net/bo_hai/article/details/6076979 JBOSS 中oracle-ds.xml的配置模板. 代码模版: <?xml vers ...