2015-09-15 1 views
0

Comment traduire SQL avec des mots clés 'in' en LINQ en entités utilisant Entity Framework 4? Tous les champs se terminant par 'ID' sont de type entier.Traduire SQL non 'dans' dans LINQ aux entités utilisant Entity Framework 4

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')) 

) 
+1

Faire un tableau, alors 'Non thisArray.Contains ("somevalue")' ' – OneFineDay

+0

Ou thisArray.Contains ("somevalue")' C#!. – juharr

Répondre

0

Essayez quelque chose comme ceci:

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())) 
+0

Merci beaucoup à tous les répondeurs! Bruniasty, pourriez-vous écrire la même requête lambda dans la syntaxe VB.NET? Comment affecter le résultat de cette requête à une variable? Comme ceci: "Dim myvariable as IEnumerable (of IRSampleCompletionGoal) = 'votre requête'"? – lana

+0

J'ai essayé Dim test Comme IEnumerable (Of IRSampleCompletionGoal) = goal_tbl.Where (! IRSampleCompletionCurrentStatistics.Where (i => i.ArtifactID! = Null || i.NoArtifactChecked == true). Tout (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())) et j'ai "l'erreur d'identification attendue à l'i.ArtifactID! = null, pointant vers les symboles '! =' ". – lana

+0

Essayez de remplacer '! = null' sur 'IsNot Nothing', et n'oubliez pas d'ajouter 'x =>' au début de l'expression lambda – Bruniasty