博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql、linq和lambda查询语句比较inner join和group by组合使用及匿名类型的处理
阅读量:6470 次
发布时间:2019-06-23

本文共 1772 字,大约阅读时间需要 5 分钟。

使用EF自己做的小功能需要遇到inner join和group by组合使用及匿名类型的处理,搜了很多,基本不能满足自己的需要,所以总结了也实现了就自己写出来,已备查看及伙伴查询参考(一般的语句查询就不说了,网络搜索很多)

语句查询的背景(要不直接看语句估计也够呛):主要想实现类似QQ相册的功能展示,页面展示所有相册列表,主要包括:相册里面的相册个数,相册中的某一个张照片作为相册的默认背景图,相册名,相册描述,删除和编辑功能

sql server:(这个就比较简单)

select count(PhotoAlbumID) as counts,c.PhotoAlbumName,c.Describe,c.PhotoAlbumID,MAX(photourl) from

(select b.PhotoAlbumID,b.PhotoUrl,a.ID,a.PhotoAlbumName,a.Describe
from PhotoAlbum as a
inner join Photos as b on a.ID=b.PhotoAlbumID) as c
group by PhotoAlbumName,Describe,PhotoAlbumID

linq:

var photolist2 = (from a in db.PhotoAlbum

join b in db.Photos on a.ID equals b.PhotoAlbumID
group new { a, b } by new { a.PhotoAlbumName, a.Describe, a.PhotoCounts, b.PhotoAlbumID } into c

select new PhotoAlbumListModel  

{
ID = c.Key.PhotoAlbumID,
PhotoAlbumName = c.Key.PhotoAlbumName,
Describe = c.Key.Describe,
PhotoCounts = c.Key.PhotoCounts,

FirstPhotoUrL = c.Max(d => d.b.PhotoUrl),  //这个可以不看,看你自己的需求

}).ToList();

注意:PhotoAlbumListModel  这个是我新建的实体类,因为原有的查询结果集是匿名类型,到页面识别不了,需要转换,当然还可以使用foreach的方法转换)

lambda:

var photolist3 = db.PhotoAlbum.Join(db.Photos, a => a.ID, b => b.PhotoAlbumID, (a, b) => new

{
a.ID,
a.PhotoAlbumName,
a.Describe,
a.PhotoCounts,
b.PhotoUrl,
b.PhotoAlbumID,
}).GroupBy(c => new { c.PhotoAlbumID, c.PhotoAlbumName, c.Describe, c.PhotoCounts }).Select(d => new PhotoAlbumListModel
{
ID = d.Key.PhotoAlbumID,
PhotoAlbumID = d.Key.PhotoAlbumID,
PhotoAlbumName = d.Key.PhotoAlbumName,
Describe = d.Key.Describe,
PhotoCounts = d.Key.PhotoCounts,
FirstPhotoUrL = d.Max(e => e.PhotoUrl),  //这个可以不看,看你自己的需求
}).ToList();

注意:PhotoAlbumListModel  这个是我新建的实体类,因为原有的查询结果集是匿名类型,到页面识别不了,需要转换,当然还可以使用foreach的方法转换)

当然方法不止一种,有其他更好更方面的也可以留言给我,不明白的也可以互相探讨,我每天都会查看一次。写的不好的,需要改进的,都可以提出意见。谢谢!

转载于:https://www.cnblogs.com/tec-1988/p/5913257.html

你可能感兴趣的文章
Lync 2013快速入门手册之一:即时消息和联机状态
查看>>
JBoss7 发布外部目录
查看>>
vSphere5.1安装记录_vCenter 5.1安装
查看>>
debian下LAMP+nginx代理+awstats+nagios+cacti(二)
查看>>
干货满满:小团队(网站&APP)没有数据方面的预算,推广运营人员如何用数据提升业务?...
查看>>
经典台词
查看>>
实战讲解.htaccess文件rewrite规则
查看>>
我的友情链接
查看>>
2003年4月全国计算机等级考试二级C语言笔试试题及答案
查看>>
python2 to python3
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
web常用的Filter业务功能
查看>>
java 读取文件路径空格和中文的处理
查看>>
Linux系统-小倒腾之Linux DIY定制裁剪(附带简单网络功能)o_o(一)
查看>>
linux shell数据重定向(输入重定向与输出重定向)详细分析
查看>>
apache 正向代理反向代理
查看>>
Microsoft Office 2013 各国语言包下载
查看>>
相对布局日志
查看>>
Linux下高效数据恢复软件extundelete应用实战
查看>>