在多个表联合查询时,使用linq语句查询就显得不那么方便了,执行效率也不高,

SQL语句查询的优势就显现出来了。

                    using (var context = new YZS_TRAEntities())
{
using (Domain.HRModelsContainer hr = new Domain.HRModelsContainer())
{var officeEntities = context.事务所主任.Where(f => officeIds.Contains(f.事务所主任ID)).ToList(); #region 获取该协议所有的对象
var mobileEntities = officeEntities.Select(f => f.手机.Trim()).ToList();
string mobile = string.Join(",", mobileEntities); //List数组的每个元素加上引号,如("12","32","5456","876455")
string s1 = string.Format("'{0}'", mobile.Replace(",", "','")); string sql = string.Format(@"SELECT d.Name [DepartName],c.Name [Position],c.No [PostNo],a.Mobile [EmployeePhone]
FROM [HYSYZSCCODB].[dbo].[Employee] a //[DepartName] [Position] [PostNo] [EmployeePhone] 是实体officeDTO定义的字段,即转对象
inner join [HYSYZSCCODB].[dbo].[DPEAss] q on a.Id=q.EmployeeId
inner join [HYSYZSCCODB].[dbo].[Post] c on q.PostId=c.Id
inner join [HYSYZSCCODB].[dbo].[Department] d on d.Id = c.DepartmentId
where q.IsHistory='false' and a.Mobile" + " in " + "(" + s1 + ")");

//where a.IsValid='true' and q.IsHistory='false' and {0} order by a.[Index] desc",
  //DepartId.HasValue ? "a.Id='" + (Guid)DepartId + "'" + "or " + "a.PDepartmentId='" + (Guid)DepartId + "'" : "1=1");

var entitys = hr.Database.SqlQuery<OfficeDTO>(sql).ToList();
#endregion
   }
}

LIst数组的元素转字符串,(以便用于in查询)

var mobileEntities = officeEntities.Select(f => f.手机.Trim()).ToList();
string mobile = string.Join(",", mobileEntities); //List数组的每个元素加上引号,如("12","32","5456","876455")
string s1 = string.Format("'{0}'", mobile.Replace(",", "','"));

SQL语句结合上下文查询(in查询)的更多相关文章

  1. SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

    原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比 今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章 ...

  2. sql语句编写 有时候一个子查询可以拆分成多个子查询

    sql语句编写 有时候一个子查询可以拆分成多个子查询

  3. ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)

    ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题:  浏览器安全限制了前端脚本跨站点的访问资源, ...

  4. python快速导出sql语句(mssql)的查询结果到Excel,解决SSMS无法加载大字段的问题

    遇到一个尴尬的问题,SSMS的GridView对于大字段的(varchar(max),text之类的),支持不太友好的,超过8000个长度之外的字符,SSMS的表格是显示不出来的(当然也就看不到了), ...

  5. 原!!mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集

    需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回 ...

  6. Hibernate criteria 混合sql语句多表关联时查询注意事项

    直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...

  7. 使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

    今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了.我从简单到复杂地写, ...

  8. oracle SQL语句练习MERGE、模糊查询、排序、

    Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language, ...

  9. 查询拼接SQL语句,多条件模糊查询

    多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...

随机推荐

  1. 02-02:springboot 整合filter

    1.通过注解扫描完成Filter组件的注册 1.1编写filter (添加拦截的servlet) //@WebFilter(filterName = "FirstFilter",u ...

  2. Redis for Windows

    要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); redis64-2.8.17 下载地址 环境下载 什么是Redis redis是一个key-value存储系统.和Me ...

  3. Java 9 中,我们可以在匿名类中使用 <> 操作符

    不说了,直接上代码: public class NewTest { public static void main(String[] args) { N<Integer> n1 = new ...

  4. Python面试题目--汇总

    原文链接-https://github.com/taizilongxu/interview_python Python语言特性 1 Python的函数参数传递 2 Python中的元类(metacla ...

  5. Python3 中使用sys.argv详解

    #/usr/bin/env python #coding:utf-8 import sys # print(sys.argv[1]) def readFile(filename): "&qu ...

  6. 逆向工程-对native层的一次简单逆向实践

    关注一款app很久了,这款app为了防止别人逆向破解拉取数据做了很多工作: 防止别人修改apk包,执行关键动作时对dex文件进行md5验证: 防止用户调用接口批量拉数据,对返回的web网页里个人信息进 ...

  7. 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)

    程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...

  8. java面向对象基础(三):对象转型和多态

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  9. 【Linux】编辑文件时,箭头按键还有BACKSPACE按键不能正常使用的解决办法

    需要安装vim sudo apt-get  remove vim-common sudo apt-get install vim

  10. Android-多线程AsyncTask

    http://www.cnblogs.com/plokmju/p/android_AsyncTask.html AsyncTask,异步任务,可以简单进行异步操作,并把执行结果发布到UI主线程.Asy ...