T-SQL语句:

select * from PayingRecords where ClientID='17787665-1d98-49e6-b254-a6a6553c4b42'
and ID not in
(select PayingRecordID from InvoicingRecordDetails where InvoicingRecordID in
(
select ID from InvoicingRecords where
ClientID='17787665-1d98-49e6-b254-a6a6553c4b42'
)
)

Linq语句:

 var query = from p in db.PayingRecords
where !(from i in db.InvoicingRecordDetails
where (from ii in db.InvoicingRecords
where ii.ClientID.Equals(paraRequest.ClientID)
select ii.ID).Contains(i.InvoicingRecordID)
select i.PayingRecordID
).Contains(p.ID)
//join td1 in db.DataAuthorities on p.DataAuthorityID equals td1.ID into p_td1
//from pp in p_td1.DefaultIfEmpty()
//join c in db.Clients on p.ClientID equals c.ID into c_join
//from tmp in c_join.DefaultIfEmpty()
where p.ClientID.Equals(paraRequest.ClientID)
select new PayingRecordResponse
{
ID = p.ID,
// DataAuthorityValue = pp.Value,
ClusterID = p.ClusterID,
ArrivingAmount = p.ArrivingAmount,
ClientID = p.ClientID,
// ClientName = tmp.Name,
ArrivingTime = p.ArrivingTime,
Description = p.Description,
UpdateTime = p.UpdateTime,
UpdateUser = p.UpdateUser,
CreateTime = p.CreateTime,
CreateUser = p.CreateUser
};

Linq生成的语句:

SELECT
[Extent1].[ClusterID] AS [ClusterID],
[Extent1].[ID] AS [ID],
[Extent1].[ArrivingAmount] AS [ArrivingAmount],
[Extent1].[ClientID] AS [ClientID],
[Extent1].[ArrivingTime] AS [ArrivingTime],
[Extent1].[Description] AS [Description],
[Extent1].[UpdateTime] AS [UpdateTime],
[Extent1].[UpdateUser] AS [UpdateUser],
[Extent1].[CreateTime] AS [CreateTime],
[Extent1].[CreateUser] AS [CreateUser]
FROM [dbo].[PayingRecords] AS [Extent1]
WHERE ( NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[InvoicingRecordDetails] AS [Extent2]
WHERE ( EXISTS (
SELECT
1 AS [C1]
FROM [dbo].[InvoicingRecords] AS [Extent3]
WHERE ([Extent3].[ClientID] = '17787665-1d98-49e6-b254-a6a6553c4b42')
AND ([Extent3].[ID] = [Extent2].[InvoicingRecordID])
)) AND ([Extent2].[PayingRecordID] = [Extent1].[ID])
)) AND ([Extent1].[ClientID] = '17787665-1d98-49e6-b254-a6a6553c4b42')

Linq中的in和not in的使用方法的更多相关文章

  1. 让LINQ中的查询语法使用自定义的查询方法

    使用LINQ时有两种查询语法:查询语法和方法语法 查询语法:一种类似 SQL 语法的查询方式 方法语法:通过扩展方法和Lambda表达式来创建查询 例如: List<, , , }; //查询语 ...

  2. Sliverlight linq中的数组筛选数据库中的数据

    首先 什么是linq呢 ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特 ...

  3. C#8.0: 在 LINQ 中支持异步的 IAsyncEnumerable

    C# 8.0中,提供了一种新的IAsyncEnumerable<T>接口,在对集合进行迭代时,支持异步操作.比如在读取文本中的多行字符串时,如果读取每行字符串的时候使用同步方法,那么会导致 ...

  4. Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数

    11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...

  5. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  6. 关于Linq中的Lambda表达式中OrderBy的深入理解

    起因:就是一段Linq语句,OrderBy里面的i是什么? IQueryable<Student> slist = (from s in EFDB.Student select s). O ...

  7. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  8. Linq 中按照多个值进行分组(GroupBy)

    Linq 中按照多个值进行分组(GroupBy) .GroupBy(x => new { x.Age, x.Sex }) group emp by new { emp.Age, emp.Sex ...

  9. Linq 中的 left join

    Linq 中的 left join 表A User: 表B UserType: Linq: from t in UserType join u in User on t.typeId equal u. ...

随机推荐

  1. MySQL保留字冲突 关键词:保留字, 关键字

    在Mysql中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号`(Tab键上方的按键)括起来. 注意,只有保留字需要``括起来,非保留字的关键字不需要. MySQL 8.0 官方文 ...

  2. WinForm之GDI画图步骤

    Graphics g = this.CreateGraphics(); //这句是创建画布g,根据窗体得到窗体的画布 Pen p = new Pen(Color.Red, 2); //这句是创建一个红 ...

  3. Python学习 day12

    一.@wraps __name__    查看函数的名字 __doc__   查看函数的文档字符串 例: def func(arg): """ 这是一个测试函数,这里是函 ...

  4. 配置idea解决乱码

    在项目开发过程中,我们一般希望在修改完代码之后不重启项目即可提现出修改的结果,那么热部署项目就显得十分必要了.在idea中将项目热部署至tomcat中的方法如下: 首先打开tomcat配置界面,在se ...

  5. IBM Worklight OutOfMemoryError: Java heap space 错误

    在启动  IBM Worklight 6.0 server 的时候,报了一个  OutOfMemory 的错误: [INFO    ] FWLSE4006I: Worklight Studio is ...

  6. Git学习系列之Git 的优势有哪些?

    Git 的优势主要有: 1.更方便的 Merge 分布式管理必然导致大量的 Branch 和 Merge 操作.因此分布式版本控制系统都特别注意这方面.在传统的 CVS 里面制作 Branch 和 M ...

  7. c++ 网络编程(八) LINUX-epoll/windows-IOCP下 socket opoll函数用法 优于select方法的epoll 以及windows下IOCP 解决多进程服务端创建进程资源浪费问题

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9622548.html 锲子:关于并发服务器中的I/O复用实现方式,前面在网络编程系列四还是五来 ...

  8. 关于new Option()

    先来了解下,如何运用js实现select动态添加option. //1.动态创建select function createSelect(){ var mySelect = document.crea ...

  9. hibernate 学习笔记1

    Hibernate session1 1.连接池的最小连接数指的是连接池初始化之后,就存在的连接数,这些连接放在内存中,等待被使用.最大连接数限定了连接池中最大同时连接数量,如果超过了这个数量,则进入 ...

  10. 日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初 ...