C# in查询
一、前言
在做项目中,我们会经常使用到 in 查询语句。那么如果我们用 EF 和 Linq 怎么写?接下来看代码
二、实例
我使用的是区域查询的例子,基本的 sql 语句如下:
SELECT * FROM Directories_AdministrativeDivision WHERE id IN ('5201','520102','520103','520111','520112','520113')
查询效果展示:

如果是 EF 查询:
我们要将 in 的数据封装为 list ,按我这的个例子的话,我是通过递归调用的方法,获取当 id=5201 下的所有区域。递归调用的方法如下。
//定义 set 列表
private HashSet<string> ids = new HashSet<string>(); /// <summary>
/// 递归获取区域id
/// </summary>
/// <param name="adId">用户的属地</param>
public void getAdId(string adId)
{
ids.Add(adId);
var ad2 = _administrativeDivisionRepository.GetAll().Where(x => x.ParentId == adId).ToList();
foreach (AdministrativeDivision a in ad2)
{
ids.Add(a.Id);
getAdId(a.Id);
}
}
EF 的 in 查询的代码如下:
public void SeachAdministrativeDivision() {
var ad = _administrativeDivisionRepository
.GetAll()
.Where(x => ids.Contains(x.Id));//这里就是 In 查询
}
如果是 Linq 的查询:
我们需要将获取的 list 变为 (‘xx’,‘xxx’)的样式,因为 Linq 查询和 SQL 语句是非常相似的。转化代码如下:
string[] array = ids.ToArray();
string str = "(";
for (int i = ; i < ids.Count; i++)
{
if (i == array.Length - )
{
str += "'" + array[i] + "')";
}
else
{
str += "'" + array[i] + "',";
}
}
Linq 的查询代码如下
var queryAdministrativeDivision = _administrativeDivisionRepository
.GetAll(); var query = from ad in queryAdministrativeDivision
where str.Contains(ad.Id) //这里是 in 查询
select ad;
最简单的办法,就是不用 in 查询,直接使用 ef 的应该属性,叫 Entity Framework 4.1 Linq Contains and StartsWith 就用可以了。
public void SeachAdministrativeDivision()
{
var ad = _administrativeDivisionRepository
.GetAll()
.Where(x => x.Id.StartsWith("52"));//StartsWith
}
三、小结
小结就是需要学习的东西还很多,我们需要更加的努力!
C# in查询的更多相关文章
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- UWP 律师查询 MVVM
APP简介 律师查询是基于聚合数据的律师查询接口做的,这个接口目前处于停用状态,但是,由于我是之前申请的,所以,还可以用,应该是无法再申请了. 效果图 开发 一.HttpHelper 既然是请求接口的 ...
- Elasticsearch 5.0 中term 查询和match 查询的认识
Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...
- ASP.NET Aries 入门开发教程4:查询区的下拉配置
背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
前言: Aries框架毕竟是开发框架,所以重点还是要写代码的,这样开发人员才不会失业,哈. 步骤1:新建html 建一个Html,主要有三步: 1:引入Aries.Loader.js 2:弄一个tab ...
- ExtJS 4.2 业务开发(二)数据展示和查询
本篇开始模拟一个船舶管理系统,提供查询.添加.修改船舶的功能,这里介绍其中的数据展示和查询功能. 目录 1. 数据展示 2. 数据查询 3. 在线演示 1. 数据展示 在这里我们将模拟一个船舶管理系统 ...
- 深入理解MySql子查询IN的执行和优化
IN为什么慢? 在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕.例如: SELECT driver_id FROM driver where driver_id in (SELECT dr ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- 【初学python】使用python连接mysql数据查询结果并显示
因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
随机推荐
- 简化Android的startActivityForResult调用
一个是解决在onActivityResult 中判断requestCode的问题,第二个是让调用代码的地方就知道我是如何处理对方activity 的返回的. 首先我们有一个ResultActivity ...
- 原来浏览器原生支持JS Base64编码解码 outside of the Latin1 range
原来浏览器原生支持JS Base64编码解码 « 张鑫旭-鑫空间-鑫生活 https://www.zhangxinxu.com/wordpress/2018/08/js-base64-atob-bto ...
- jQuery——能够编辑的表格
版权声明:欢迎转载,请注明出处 https://blog.csdn.net/suneqing/article/details/26856635 今天学习了利用jQuery实现能够编辑的表格这个 ...
- 2014-8-17 note
一.方格求最短路径 二.用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到则只算一种,一共有多少种染色模式 设两种颜色为黑白 全黑1种+全白1种=2 1黑5白(1种)+1白5黑(1种)=2种 2黑4 ...
- Machine Learning in Action(6) AdaBoost算法
Adaboost也是一种原理简单,但很实用的有监督机器学习算法,它是daptive boosting的简称.说到boosting算法,就不得提一提bagging算法,他们两个都是把一些弱分类器组合起来 ...
- Python序列——列表
列表是什么 1 创建列表 2 访问列表和更新列表 列表相关操作 内建函数对列表的支持 1 cmp 2 序列类型函数 列表内建函数 列表应用 1 堆栈 2 队列 1. 列表是什么 列表也是序列的一种.列 ...
- sendevent是使用
按下: sendevent /dev/input/event4 1 254 1 sendevent /dev/input/event4 0 0 0 松开: sendevent /dev/input/e ...
- Jmeter创建一个简单的http接口用例
1.新建线程组 添加->Threads(Users)->线程组 线程组用来模拟用户进程. 2.添加http信息头管理器 添加->配置元件->http信息头管理器 Systemi ...
- struts2 学习日记1
struts2 简介 struts2的前身可以说是framework.strut1作为当时很流行的框架,但是有很多的不足之处,framework出生后,它带来了很好的框架,但是很多人已经习惯了stru ...
- css绘制三角形
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...