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. 安装vs2013要求重启后安装

    解决方案: 卸载360,然后杀毒, 重启电脑就可以直接安装vs了

  2. jQuery练习 | 提交表单验证

    执行函数时,raturn false可阻止标签(例如超链接)的事件发生,从而达到提交表单的效果 <!DOCTYPE html> <html lang="en"&g ...

  3. c# xml序列化和反序列化。也就是xml的解析和反解析。

    用习惯了newTownSoft.json 的json反序列化.碰到xml是真的不习惯. 每次json反序列化都是直接把json丢到bejson网站生成一个实体类,稍微修改修改一点点变量名.然后直接ne ...

  4. line-height详解

    line-height详解 要说line-height就必须要知道这几个概念了: 顶线.中线.基线.底线. 这也就是在vertical-align中可能用到的top,middle,baseline和b ...

  5. MySQL where 表达式

    where 条件表达式 对记录进行过滤,如果没有指定where子句,则显示所有记录. 在where表达式中,可以使用MySQL支持的函数或运算符.

  6. C#利用WebBrowser获取完整COOKIE

    代码: http://www.cnblogs.com/hsapphire/archive/2010/09/10/1823384.html http://blog.csdn.net/attilax/ar ...

  7. MyBatis逆向工程详细教程

    1 导入逆向工程到eclipse中 2 修改配置文件 注意修改以下几点: 修改要生成的数据库表 pojo文件所在包路径 Mapper所在的包路径 配置文件如下: <?xml version=&q ...

  8. 并发编程之synchronize

    synchronized是Java中的关键字,是一种常用的线程同步锁. 用法 注意:在理解synchronized时,要知道一个核心点,synchronized锁定的不是代码,而是对象.使用synch ...

  9. 级联sql

    select ID, PID, NAME,KEY from HS_DICT start with KEY = 'HS_EXP_WORK_LOCATION'connect by prior ID = P ...

  10. Laravel 使用Voyager导致多个数据库连接总是返回默认连接?

    问题与分析 最近的项目碰到一个奇怪的问题,在Laravel(5.3)中想建立多个数据库连接连到MySQL的不同数据库(另一个连接名为conn2),执行如下语句得到却发现得到的仍然是默认连接: $con ...