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脚本传递参数

    给python程序传递参数 运行python脚本时有时需要执行实传递参数 在linux下: [root@Test ~]# cat /opt/python.py #!/usr/local/bin/pyt ...

  2. Eigen--简单的C++矩阵计算库

    晚上突然想写一段小C++程序,要用到矩阵求逆呀乘法呀之类的,所以找了一下有什么现成的可用的C++矩阵计算相关的库,发现有一大堆,在其中各种各样的配置,感觉比较麻烦.从方便性来说Eigen是最方便的了, ...

  3. java.lang.StackOverflowError at org.eclipse.jetty.util.resource.Resource.<init>(Resource.java:40)

    今天做项目的时候,不知道哪根筋搭错了,多写了一句话,导致我忙活了一下午,各种百度,最后在朋友的帮助下,给了我思路,完美解决,不多说,上图. 我的登录页面引入了bootstrap.jsp的东西 解决问题 ...

  4. 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)

    AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...

  5. 苹果放宽了 iOS 5.0 对应用本地存储的限制

    iOS5.0引入了iCloud,让那些需要本地存储较多数据的app开发者(比如支持离线的杂志,新闻类app)陷入了 尴尬的境地,因为将大量数据存储在/Documents 文件夹将导致iCloud同步变 ...

  6. Android 控件架构与自定义控件详解

    架构: PhoneWindow 将一个 DecorView 设置为整个应用窗口的根 View,这里面所有 View 的监听事件,都通过 WindowManagerService 来接收.DecorVi ...

  7. How to Log Users Login and Logout Details Through Oracle Forms

    Log user's login and logout details in to table through Oracle Forms using POST-LOGON and PRE-LOGOUT ...

  8. CentOS 挂载NTFS分区的两种方法

    第一种是安装内核模块,可到 http://sourceforge.net/projects/linux-ntfs/files/ 下载,需下载与你系统内核想对应的版本,使用uname -a 查看当前内核 ...

  9. gitbook简单安装和使用

    1.gitbook是用来写书的,支持markdown等 2.在线写 gitbook最新版地址:https://www.gitbook.com/account/ 免费用户只能有一个public和一个pr ...

  10. MyBatis-Invalid bound statement (not found)-问题处理

    最近把工程改为Hibernate和MyBatis并存,并存只要注意两点即可: 1.使用同一个dataSource 2.事物交给Hibernate进行管理(Hibernate4+)  Hibernate ...