EntityFramwork 查询

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()

};

EntityFramwork 查询的更多相关文章

  1. EntityFramwork 七七八八

    Tip 技术的选型受技术先进性.技术持续性.技术普及度.推行力度的影响. 我也很无奈,一大把年纪了又要重新学一种ORMapping框架. 说实话,这是我用过的最复杂的ORMapping框架了. Ent ...

  2. [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper 支持.net framework4.5.1 ...

  3. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  4. UWP 律师查询 MVVM

    APP简介 律师查询是基于聚合数据的律师查询接口做的,这个接口目前处于停用状态,但是,由于我是之前申请的,所以,还可以用,应该是无法再申请了. 效果图 开发 一.HttpHelper 既然是请求接口的 ...

  5. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  6. ASP.NET Aries 入门开发教程4:查询区的下拉配置

    背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...

  7. ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区

    前言: Aries框架毕竟是开发框架,所以重点还是要写代码的,这样开发人员才不会失业,哈. 步骤1:新建html 建一个Html,主要有三步: 1:引入Aries.Loader.js 2:弄一个tab ...

  8. ExtJS 4.2 业务开发(二)数据展示和查询

    本篇开始模拟一个船舶管理系统,提供查询.添加.修改船舶的功能,这里介绍其中的数据展示和查询功能. 目录 1. 数据展示 2. 数据查询 3. 在线演示 1. 数据展示 在这里我们将模拟一个船舶管理系统 ...

  9. 深入理解MySql子查询IN的执行和优化

    IN为什么慢? 在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕.例如: SELECT driver_id FROM driver where driver_id in (SELECT dr ...

随机推荐

  1. Python Challenge 第九关

    第九关只有一幅图,上面有一些黑点.网页名字叫:connect the dots.可能是要把这些点连起来. 查看源代码,果然有两个整数集合 first 和 second.并且有个提示:first+sec ...

  2. 集合点-Jmeter-集合点详解

    集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点, 还拿那个用户和密码的地方,每到输入用户 ...

  3. RAID 1-6

    RAID 0 RAID 0亦称为带区集.它将两个以上的磁盘串联起来,成为一个大容量的磁盘.在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最 ...

  4. Oracle的隔离级别

    隔离级别(isolation level)       隔离级别定义了事务与事务之间的隔离程度.     隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差:隔离程度越低,数据库的并发性越 ...

  5. luogu P1579 哥德巴赫猜想(升级版)

    题目描述 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合(双 ...

  6. 标签页的切换方法(DOM)

    效果: 1.点击“JAVA语言” 2.点击“C语言” 3.点击C++语言 代码: <!doctype html> <html> <head> <meta ch ...

  7. EasyMvc入门教程-基本控件说明(10)图片轮播导航

    图片轮播导航大家一定很常见,尤其是中小型建站系统的必备神器..:) 先上图上例子,看效果如下: 实现代码如下: @{ var data = new List<PhotoPlayerItem> ...

  8. maven仓库中有jar包pom还报错

    maven仓库中有jar包pom还报错 就报错,咋啦? 这个包来源不明,自己拷贝进来的吧?你当我mvn是傻子?我要去网上验证一下: 我自己有个_remote.respositories文件,如果自己用 ...

  9. OSX:设置用户默认浏览器

    近期我们遇到的情况是,须要统一设置用户的默认浏览器为Google Chrome.而系统默认的是Safari. 这个设置是系统Launch Services基于用户管理的. 意思就是说,即便是改动了系统 ...

  10. ps快捷键记录

    alt+delete  前景色填充 ctrl+delete  背景色填充 alt+shift+鼠标调节  变换选取,做圆环 ctrl+t  自由变换 alt+鼠标拖动  快捷复制某区域 delete ...