entity framework 查询
1、简单查询:
SQL:
- SELECT * FROM [Clients] WHERE Type=1 AND Deleted=0 ORDER BY ID
EF:
- //Func形式
- var clients = ctx.Clients.Where(c => c.Type == 1 && c.Deleted == 0)
- .OrderBy(c => c.ID)
- .ToList();
- //Linq形式
- var clients = from c in ctx.Clients
- where c.Type == 1 && c.Deleted==0
- orderby c.ID
- select c;
2、查询部分字段:
SQL:
- SELECT ID,Name FROM [Clients] WHERE Status=1
EF:
- //Func形式
- var clients = ctx.Clients.Where(c => c.Status == 1)
- .Select(c => new { c.ID, Name = c.ComputerName })
- .ToList();
- //Linq形式
- var clients = from c in ctx.Clients
- where c.Status == 1
- select new { c.ID, Name = c.ComputerName }; :
3、查询单一记录:
SQL:
- SELECT * FROM [Clients] WHERE ID=100
EF:
- //Func形式
- var client = ctx.Clients.FirstOrDefault(c => c.ID == 100);
- //Linq形式
- var client = (from c in ctx.Clients
- where c.ID = 100
- select c).FirstOrDefault();
4、LEFT JOIN 连接查询
SQL:
- SELECT c.ID,c.ComputerName,g.Name GroupName
- FROM [Clients] c
- LEFT JOIN [Groups] g
- ON c.GroupID = g.ID
- WHERE c.Status=1
EF:
- //Func形式
- var clients = ctx.Clients.Where(c => c.Status == 1)
- .Select(c => new
- {
- c.ID,
- c.ComputerName,
- GroupName = ctx.Groups.FirstOrDefault(g => g.ID == c.GroupID).Name
- })
- .ToList();
- //Linq形式
- var clients = from c in ctx.Clients
- where c.Status == 1
- select new
- {
- c.ID,
- c.ComputerName,
- GroupName = (from g in ctx.Groups
- where g.ID == c.GroupID
- select g.Name).FirstOrDefault()
- };
5、INNER JOIN 连接查询:
SQL:
- SELECT c.ID,c.ComputerName,g.Name GroupName
- FROM [Clients] c
- INNER JOIN [Groups] g
- ON c.GroupID = g.ID
- WHERE c.Status=1
- ORDER BY g.Name
EF:
- //Func形式
- var clients = ctx.Clients.Where(c => c.Status == 1)
- .Join(ctx.Group, c => c.GroupID, g => g.ID, (c,g) =>
- {
- c.ID,
- c.ComputerName,
- GroupName = g.Name
- })
- .OrderBy(item => item.GroupName)
- .ToList();
- //Linq形式1
- var clients = from c in ctx.Clients
- from g in ctx.Groups
- where c.GroupID == g.ID
- orderby g.Name
- select new
- {
- c.ID,
- c.ComputerName,
- GroupName = g.Name
- };
- //Linq形式2
- var clients = from c in ctx.Clients
- where c.Status == 1
- join g in ctx.Group
- on c.GroupID equals g.ID into result
- from r in result
- order by r.Name
- select new
- {
- c.ID,
- c.ComputerName,
- GroupName = r.Name
- };
6、分页
SQL:
- -- 方案1
- SELECT TOP 10 * FROM [Clients] WHERE Status=1
- AND ID NOT IN
- (
- SELECT TOP 20 ID FROM [Clients] WHERE Status=1
- ORDER BY ComputerName
- )
- ORDER BY ComputerName
- --方案2
- SELECT * FROM
- (
- SELECT *, ROW_NUMBER() OVER(ORDER BY ComputerName) AS RowNo
- FROM [Clients]
- WHERE Status=1
- )t
- WHERE RowNo >= 20 AND RowNo < 30
EF:
- //Func形式
- var clients = ctx.Clients.Where(c => c.Status=1)
- .OrderBy(c => c.ComputerName)
- .Skip(20)
- .Take(10)
- .ToList();
- //Linq形式
- var clients = (from c in ctx.Clients
- orderby c.ComputerName
- select c).Skip(20).Take(10);
7、分组统计:
SQL:
- SELECT Status,COUNT(*) AS Cnt FROM [Clients]
- GROUP BY Status
- ORDER BY COUNT(*) DESC
EF:
- //Func形式
- var result = ctx.Clients.GroupBy(c => c.Status)
- .Select(s => new
- {
- Status = s.Key,
- Cnt = s.Count()
- })
- .OrderByDescending(r => r.Cnt);
- //Linq形式
- var result = from c in ctx.Clients
- group c by c.Status into r
- orderby r.Count() descending
- select new
- {
- Status = r.Key,
- Cnt = r.Count()
- };
entity framework 查询的更多相关文章
- Entity Framework查询原理
Entity Framework查询原理 前言 Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Rela ...
- Entity Framework查询生成大量的子查询,如何避免?求救
最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想.经过跟踪sql,我发现很多简单的 ...
- 如何得到EF(ADO.NET Entity Framework)查询生成的SQL? ToTraceString Database.Log
ADO.NET Entity Framework ToTraceString //输出单条查询 DbContext.Database.Log //这里有详细的日志
- C# Entity Framework查询小技巧 NoTracking
在使用Entity Framework做查询的时候,如果只需要显示,而不用保存实体,那么可以用AsNoTracking()来获取数据. 这样可以提高查询的性能. 代码如下: var context = ...
- Entity Framework查询注意
首先我们看下where的方法,直接查看定义(定义如下),其实一种是对IEnumerable的扩展,一种是对IQueryable的扩展,直接看最常用的,其实区别就在IEnumerable的扩展的参数是系 ...
- Entity Framework查询
Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更喜欢Func形式). ...
- [原创]Entity Framework查询原理
前言 Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架.Ent ...
- 解决Entity Framework查询匿名对象后的跨域访问的一种方式
在Entity Framework中,可以使用lambda表达式进行对数据的查询,而且可以将查询结果直接映射为对象或者对象列表,这极大的提高的开发速度,并且使数据层的数据更加方便处理和传递.但是很多时 ...
- 一个最简单的使用Entity Framework 查询SQL 数据库的例子
1.ADO.NET 3.5 Entity Framework是随着.net framework 3.5一起发布的,确认开发环境版本是大于等于3.5版本 2.确认已经安装了ADO.NET 3.5 Ent ...
- Entity Framework查询,EF执行SQl
一.简介 EF 支持开放底层的 ADO.NET 框架,DbContext有三种常用方法 DbSet.SqlQuery //查询并返回Entities DbContext.Database.SqlQue ...
随机推荐
- cron以及在laravel中使用cron
yum install vixie-cron yum install crontabs /bin/systemctl restart crond.service #启动服务 /bin/systemct ...
- 解决CxGrid Filter 后,通过 Dataset 循环时得出的结果与 Grid显示不同步的问题.
// 方案1: 强制cxgrid 使用 dataset的 Filter GridMaster.DataController.Filter.AutoDataSetFilter := True; /// ...
- UTF8后MD5
function ToUTF8Encode(str: string): string; //将字符串转UTF8编码 var b: Byte; begin for b in BytesOf(UTF8En ...
- SqlServer中创建Oracle连接服务器
转自太祖元年的:http://www.cnblogs.com/jirglt/archive/2012/06/10/2544025.html参考:http://down.51cto.com/data/9 ...
- 【BZOJ 3098】 Hash Killer II
Description 这天天气不错,hzhwcmhf神犇给VFleaKing出了一道题:给你一个长度为N的字符串S,求有多少个不同的长度为L的子串.子串的定义是S[l].S[l + 1].... S ...
- 【BZOJ [1878】[SDOI2009]HH的项链
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
- python解决汉诺塔问题
今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...
- ios设备 分辨率(转)
1 iOS设备的分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 iPhone/iPod Touch 普屏分辨率 320像素 x 480像素 Retina ...
- 明晰三种常见存储技术:DAS、SAN和NAS
随着企业网络应用的时间和应用的数据量的加大,企业已经感觉到存储容量和性能落后与网络的应用发展需求,特别是流媒体企业,在这种应用条件下满足用户的存储需求的技术应用诞生,DAS.NAS和SAN三种存储技术 ...
- mv 的使用
Linux下目录的合并以及文件的覆盖案例 功能说明:将源文件重命名为目标文件,或将源文件移动至指定目录. 用法:mv [选项]... [-T] 源文件 目标文件 或:mv [选项]... 源文件... ...