使用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的方法转换)

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

sql、linq和lambda查询语句比较inner join和group by组合使用及匿名类型的处理的更多相关文章

  1. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  2. sql 、linq、lambda 查询语句的区别

    LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...

  3. sql 、linq、lambda 查询语句

    http://www.cnblogs.com/lei2007/archive/2011/07/21/2113161.html

  4. T-SQL:SQL Server-数据库查询语句基本查询

    ylbtech-SQL Server-Basic:SQL Server-数据库查询语句基本查询 SQL Server 数据库查询语句基本查询. 1,数据库查询语句基本查询   数据库 SQL Serv ...

  5. 一道sql面试题(查询语句)

    一道sql面试题(查询语句)   id name age 1  a        11 2  b        11 3  c        12 4  d        13 5  e        ...

  6. 查询语句中select from where group by having order by的执行顺序

    查询语句中select from where group by having order by的执行顺序   1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--w ...

  7. Oracle SQL:select各类查询语句总结

    SQL查询语句总结 数据查询语言:即DML(Data Mannipulation Language)数据操纵语言,用于查询.操纵数据表资料行 本手册所有示例引用表均以TIPTOP GP  ERP数据库 ...

  8. sql最简单的查询语句

    -- 2 **************************************************** -- 最简单的查询语句 -- 2.1 ----------------------- ...

  9. SQL中的DQL查询语句

    目录 1. DQL:查询语句 排序查询 聚合函数 分组查询 分页查询 2. 约束 3. 多表之间的关系 4. 范式 DQL:查询语句 1. 排序查询 语法:order by 子句 order by 排 ...

随机推荐

  1. p1020导弹拦截

    传送门 P1020导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度 ...

  2. C++正确的cin输入

    void test1(void) { int number; cout << ">> pls input a integer number:"; while ...

  3. 51nod 1218 最长递增子序列 V2——LIS+思路(套路)

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 自己怎么连这种 喜闻乐见的大水题 都做不出来了…… 好像见过 ...

  4. wxPython学习资料

    [译]wxPython布局管理简介 https://www.pystack.org/wxpython_sizer/ 设计器.代码分离 http://book.douban.com/review/578 ...

  5. JS---分解质因数

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. 你所不知道的html5与html中的那些事(三)

    文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作 ...

  7. [51nod1035]最长的循环节

    题意:输出<=n的数中倒数循环节长度最长的那个数 解题关键:http://w3.math.sinica.edu.tw/math_media/d253/25311.pdf https://wenk ...

  8. Infoapth 使用拼写 并加载web part 在Infopath的页面上

    <g_vml_:shape style="POSITION: absolute; WIDTH: 568px; HEIGHT: 1312px; TOP: 0px; LEFT: 0px&q ...

  9. CodeForces - 505B Mr. Kitayuta's Colorful Graph 二维并查集

    Mr. Kitayuta's Colorful Graph Mr. Kitayuta has just bought an undirected graph consisting of n verti ...

  10. ms sql server line feed

    多行文本换行: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ======================================== ...