Comment écrire des sous-requêtes comme celles-ci dans EF?Sous-requête Entity Framework
select * from table1 where col1 in (select col1 from table2 where col2 = 'xyz')
ou
select * from table1 where col1 not in (select col1 from table2 where col2 = 'xyz')
J'ai essayé quelque chose comme ces
from t1 in table1
where (from t2 in table2 where col2 = 'xyz' select t2.col1).Contains(t1.col1)
select t1
et
from t1 in table1
where !(from t2 in table2 where col2 = 'xyz' select t2.col1).Contains(t1.col1)
select t1
ces requêtes fonctionnent bien LINQPad ou LINQ to sql
Dans le cas où les réponses existantes ne correspondent pas à vos attentes, veuillez publier * ce qui s'est passé * lorsque vous avez essayé d'utiliser les expressions de requête que vous avez publiées. Avez-vous eu une erreur de compilation? Erreur d'exécution? Quelle était l'erreur? Ou n'avez-vous tout simplement pas obtenu les résultats que vous attendiez? – Aaronaught
tout d'abord merci pour la réponse immédiate! c'est ce que je suis en train d'accomplir - select * from table1 où somestringmanipulation (col1) dans (sélectionnez somestringmanipulation (col1) de table2 où 'xyz' col2 =) où Table1 et Table2 n'a pas de relations . Je reçois l'erreur suivante lorsque j'essaie d'utiliser Contient, mais il donne des résultats dans LinqPad LINQ to Entities ne reconnaît pas la méthode 'Boolean Contient [Int32] (System.Linq.IQueryable'1 [System. Int32], Int32) ', et cette méthode ne peut pas être traduite en une expression de magasin. – Gokulnath
Je ne pense pas que je peux accomplir cela sans utiliser IN ou NOT IN, pour le moment j'avais prévu d'utiliser la procédure stockée et plus tard, je vais regarder dans http://stackoverflow.com/questions/374267/contains -workaround-using-linq-to-entities – Gokulnath