[英]SQL not in to Linq
I have a (Oracle)SQL query that I want to translate to Linq to use on a NHibernate context. 我有一个(Oracle)SQL查询,我想转换为Linq以在NHibernate上下文中使用。 What the query does is to get me all the Functions that has been deleted from a given Module (ie. they don't exist in the given
module
but are linked to a predecessor Module ) 该查询所做的是让我了解已从给定模块中删除的所有功能 (即,它们在给定
module
不存在,但已链接到前一个模块 )
"SELECT * FROM Function WHERE ModID = " + module.PredecessorID + "
AND FncName NOT IN
(SELECT FncName FROM Function WHERE ModId = " + module.ModID + " )"
Here is a image to explain the data model 这是一张解释数据模型的图像
I'm looking for an expression with the "dot notation", something like this: 我正在寻找带有“点符号”的表达式,如下所示:
DBContext.GetAll<Function>()
.Where(x => x.Module.ModID == module.PredecessorID)...
You could do this in two steps (for readability). 您可以分两个步骤进行操作(以提高可读性)。
var excludedNames = DbContext.GetAll<Function>()
.Where(x => x.ModeID == module.ModID)
.Select(x => x.FncName);
var result = DBContext.GetAll<Function>()
.Where(x => x.Module.ModID == module.PredecessorID &&
!excludedNames.Contains(x.FncName));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.