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. Android 读取手机联系人、拨号、发送短信及长按菜单的操作

    本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...

  2. DB2时间函数 实现 时间加减

    时间加减:后边记得跟上时间类型如day.HOUR TIMESTAMP ( TIMESTAMP(DEF_TIME)+1 day)+18 HOUR   DB2时间函数是我们最常见的函数之一,下面就为您介绍 ...

  3. codevs——1048 石子归并 (区间DP)

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解       题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并 ...

  4. Enter Query Mode Search Tricks Using Enter_Query Built-in in Oracle Forms

    In this post you will learn how to specify any condition in enter query mode of Oracle Forms. Whenev ...

  5. git-for-windows 安装无图标的问题

    git-for-windows.ico 安装无图标的问题 一. 问题表现: 桌面图标与右建菜单图标,所是未知文件的图标, 二. 问题解决: 在shard/git/ copy 一个ico 文件(如git ...

  6. 微信小程序 - 考试状态不同显示

    未开考 .已交卷. 考试中 .考试结束 #ddd      #f00     #ff0    默认禁用色 禁用的button仅有style起作用,四个状态,通过wx:if ... elif ... e ...

  7. win10 只要打开文件对话框就卡死解决方法

    我电脑的问题是:win10系统,只要打开 文件对话框就卡死,假死,cpu100% 一直没有解决,但是只要把缩略图关了,就ok. 但是又想要留着缩略图,还是得显示,于是乎一直在找解决办法. 此方法好像可 ...

  8. Shell脚本之:if-else

    Shell 有三种 if ... else 语句: 1.if ... fi 语句: 2.if ... else ... fi 语句: 3.if ... elif ... else ... fi 语句. ...

  9. 从头開始写项目Makefile(五):嵌套运行

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 在大一些的项目里面,全部源码不会仅仅放在同一个文件夹,一般各个功 ...

  10. curl库pycurl实例及参数详解

    pycurl是功能强大的python的url库,是用c语言写的,速度很快,比urllib和httplib都快. 今天我们来看一下pycurl的用法及参数详解 常用方法: pycurl.Curl() # ...