C# 使用实体框架4将SQL“not in”转换为LINQ to实体
如何使用Entity Framework 4将带有“not in”关键字的SQL转换为LINQ to实体? 以“ID”结尾的所有字段都是整数类型C# 使用实体框架4将SQL“not in”转换为LINQ to实体,c#,sql-server,vb.net,entity-framework,linq,C#,Sql Server,Vb.net,Entity Framework,Linq,如何使用Entity Framework 4将带有“not in”关键字的SQL转换为LINQ to实体? 以“ID”结尾的所有字段都是整数类型 SELECT * FROM IRSampleCompletionGoal as goal_tbl where (Cast(goal_tbl.[TermID] as nvarchar) +' '+Cast(goal_tbl.[UserID] as nvarchar)+' '+Cast(goal_tbl.[CourseID] a
SELECT *
FROM IRSampleCompletionGoal as goal_tbl
where
(Cast(goal_tbl.[TermID] as nvarchar) +' '+Cast(goal_tbl.[UserID] as nvarchar)+' '+Cast(goal_tbl.[CourseID] as nvarchar)+' '+cast(goal_tbl.[StudentID] as nvarchar)+' '+cast(goal_tbl.[ObjectiveID] as nvarchar))
NOT IN
(
select (Cast([TermID] as nvarchar) +' '+Cast([UserID] as nvarchar)+' '+Cast([CourseID] as nvarchar)+' '+cast([StudentID] as nvarchar)+' '+cast([ObjectiveID] as nvarchar))
from IRSampleCompletionCurrentStatistics
where ((ArtifactID is not null) OR (NoArtifactChecked='True' ))
)
试着这样做:
goal_tbl.Where(x => !IRSampleCompletionCurrentStatistics.Where(i => i.ArtifactID != null || i.NoArtifactChecked == true).Any(i => (i.TermID.ToString() + " " + i.UserID.ToString() + i.StudentID.ToString() + " " + i.ObjectiveID.ToString()) == (x.TermID.ToString()+ " " + x.UserID.ToString() + " " + x.CourseID.ToString() + " " + x.StudentID.ToString() + x.ObjectiveID.ToString()))
创建一个数组,而不是thisArray.ContainssomevalueOr!此数组。包含C的meValue。非常感谢所有响应者!Bruniasty,您能用VB.NET语法编写相同的lambda查询吗?如何将此查询的结果分配给变量?像这样:Dim myvariable作为IEnumerableof IRSampleCompletionGoal='your query'?我尝试了Dim测试作为IEnumerableof IRSampleCompletionGoal=goal\u tbl.Where!IRSampleCompletionCurrentStatistics.Wherei=>i.ArtifactID!=null | | i.NoArtifactChecked==true.Anyi=>i.TermID.ToString++i.UserID.ToString+i.StudentID.ToString++i.ObjectiveID.ToString==x.TermID.ToString++x.UserID.ToString++x.CourseID.ToString++x.StudentID.ToString+x.ObjectiveID.ToString,我在i.ArtifactID处得到了预期的标识符错误!=null,指向“!=”符号。尝试替换“!=“IsNot Nothing”上的null“Isnothing”,请不要忘记在lambda表达式的开头添加“x=>”。如果可能,请有人将原始查询翻译为查询表达式语法,而不是基于方法的语法(对于VB)?非常感谢。