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. java 仓库maven

    工具: apache-maven-3.2.3.zip maven_data.zip 在java Window->Preferences->Maven中 Installations中添加ap ...

  2. Codeforces 最大流 费用流

    这套题目做完后,一定要反复的看! 代码经常出现的几个问题: 本机测试超时: 1.init函数忘记写. 2.addedge函数写成add函数. 3.边连错了. 代码TLE: 1.前向星边数组开小. 2. ...

  3. HDU 6225.Little Boxes-大数加法 (2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学))

    整理代码... Little Boxes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/O ...

  4. Codeforces 371A K-Periodic Array(模拟)

    题目链接 K-Periodic Array 简单题,直接模拟即可. #include <bits/stdc++.h> using namespace std; #define REP(i, ...

  5. codevs——1154 能量项链(区间DP)

    2006年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解    题目描述 Description 在Mars星球上,每个Mars人 ...

  6. centos7最新 mysq5.6 安装

    安装教程  1.下载mysql的repo源   wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 可能遇见的问题: ...

  7. js 值类型和引用类型

    function chainStore() { var store1='Nike China'; var store2=store1; store1='Nike U.S.A.'; alert(stor ...

  8. require_once(): Failed opening required '/var/www/config/config.php' (include_path='.:') in /var/www/vendor/forkiss/pharest/src/Pharest/Register/Register.php on line 10

    环境 docker环境 错误 [Tue Jun 18 18:43:26 2019] 127.0.0.1:53980 [500]: /index.php - require_once(): Failed ...

  9. MyEclipse 中自定义日期格式

    从数据库中读出Data数据: 而想实现的是这样: 解决办法: 1. 在这个类里添加自定义的变量birthf: public abstract class AbstractUsers implement ...

  10. 贴几个spark提交任务的小脚本

    spark单个master节点的提交方式 spark-submit --master spark://hadoop-namenode-02:7077 \ --class com.dinpay.bdp. ...