怎样用LINQ或EF生成NOT IN语句

例如:有一个问卷表Questionnaire和一个活动与问卷的关系表ActivityOption_Questionnaire,现在我们要找出不在活动中的问卷。

用EF实现方法如下:

var notIn = db.Questionnaires.Where(a => !((db.ActivityOption_Questionnaire_s.Select(b => b.QuestionnaireID)).Contains(a.ID)));

用LINQ实现方法:

var notIn = from a in Questionnaire
where !((from b in db.ActivityOption_Questionnaire_s select b.QuestionnaireID).Contains(a.ID))
select a;

时间: 2024-08-03 19:23:53

怎样用LINQ或EF生成NOT IN语句的相关文章

EF生成的SQL语句执行顺序问题。

//实体被更改后,再做删除,EF只生成删除语句 //实体删除后再更改,EF报错 //添加语句会再,更改,删除后执行,更AddObject位置无关 //一个实体多个字段被改,只会生成一句update //多个表的update语句,会按表名顺序先后执行 //两个SaveChanges同时涉及多张表时,不会因为写入顺序(都是排序后的)不同而产生死锁 //update 多个update之间按表名来 --> delete(顺序同上 )->insert(顺序同上) //需要避免与ctx.ExecuteSt

查看Linq to Sql生成的sql语句(转)

在控制台项目中,比较简单,直接db.Log = Console.Out;就OK了 但是在其他项目中,需要处理如下: StreamWriter sw = new StreamWriter("F:\\Linqlog.txt", true); db.Log = sw; ......//Linq to Sql代码 sw.Close(); 然后就可以去txt文件中查看了 原文地址:https://www.cnblogs.com/xihong2014/p/8343723.html

C# 查看EF生成的SQL语句

用sqlsever追踪最后的sql语句. 返回IQueryable<T>类型, 里面封装的就是生成的SQL脚本,设置断点queryable = DataContext.Set<T>().Where<T>(whereLambda).AsQueryable(); queryable 右键快速监视, 或者ToString()返回字符串类型直接打印输出都能看到sql脚本. 打开SQLServer - 工具 - SQL Server Profiler 上查看执行的SQL语句. 原

使用EntityFramework6.1的DbCommandInterceptor拦截生成的SQL语句

开始 EF6.1也出来不少日子了,6.1相比6.0有个很大的特点就是新增了System.Data.Entity.Infrastructure.Interception 命名空间,此命名空间下的对象可以允许我们更加方便的了解到EF运行时的一些信息,当然我们最想看的还是EF生成的Sql语句,话不多讲,开始干吧; view sourceprint? 01.class EFIntercepterLogging : DbCommandInterceptor 02.{ 03.private readonly

应用开发之Linq和EF

上一章笔者对于WinForm开发过程用到的几个知识点做了讲解.笔者们可以以此为开端进行学习.而本章我们来讲一个跟ORM思想有关的知识点.在讲之前让我们想一下关于JAVA的hibernate知识点.hibernate也是ORM框架.记得hibernate里面有一个叫HQL.先不管HQL的好与坏.主要是明白HQL的目地是什么.ORM的思想就是为了让用户在操作数据的时候用上面向对象的思想来看,而不是二维数据了.所以HQL笔者认为就是一个面向对象思想的SQL语句.那么为什么笔者要讲到HQL呢?事实上笔者

Java进击C#——应用开发之Linq和EF

本章简言 上一章笔者对于WinForm开发过程用到的几个知识点做了讲解.笔者们可以以此为开端进行学习.而本章我们来讲一个跟ORM思想有关的知识点.在讲之前让我们想一下关于JAVA的hibernate知识点.hibernate也是ORM框架.记得hibernate里面有一个叫HQL.先不管HQL的好与坏.主要是明白HQL的目地是什么.ORM的思想就是为了让用户在操作数据的时候用上面向对象的思想来看,而不是二维数据了.所以HQL笔者认为就是一个面向对象思想的SQL语句.那么为什么笔者要讲到HQL呢?

监视EF生成SQL的方法(log , SqlServerProfile)

大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自己缺乏好的工具去监控sql,本篇给大家介绍的三种监控手段Log和SqlServer profile,ef profile... 一:Log监控 这个属于entity framework自带的一个Action方法,它给大家带来了不错的用户体验,我们可以将其输出放到控制台,又或者写入到记事本中...这

Linq to EF 中Contains的演变

在早期Linq to EF中没有提供对Contains方法的支持, 那时候只能将所有数据获取到内存中,然后通过Linq to Object的Contains方法来达到相同的效果(如果多表筛选也可以使用Any方法实现,也可采用自定义linq的方式实现,但这里我们主要讨论使用数组筛选表的情况). 从Linq to EF 4.0 开始加入了对Contains的支持,使用方式如下: 以上linq最终会被翻译为如下形式的sql语句: SELECT [Extent1].[Name] AS [Name] FR

EF生成 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义

错误描述: 1 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义.必须添加对程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用. D:\HF_Source\webapitest\test2\DFSoft.Plat.SQLServerDAL\BaseService\B_AgreementTypeDAL.cs 30 13 DFSof