Ok, but this predicate var predicate = PredicateBuilder.True<Class>(); predicate = predicate.Or(p => object.ExtendQuery().Select(x => x.Id).Contains(p.Id)); var combinedIQueryable = allUserNotes.Where(predicate);
will always evaluate to true 2016-03-01 18:06 GMT+01:00 Oskar Berggren <oskar.bergg...@gmail.com>: > He means the AND versus OR immediately after "b.Value = 20" - since the > LINQ for that isn't shown I assume it was inserted in the allUserNotes > query earlier with a different Where() call. There is always AND between > all Where()-calls. > > /Oskar > > 2016-03-01 16:57 GMT+00:00 Gunnar Liljas <gunnar.lil...@gmail.com>: > >> But is that all? In your previous example you hade multiple expressions >> in listOfIQueryablePerson. If that's not the case, a predicate builder >> may be unnecessary. >> >> You can't use PredicateBuilder.True<Class>() and predicate.Or, since if >> you do the expression will always evaluate to true. Use >> PredicateBuilder.*False*<Class>(); >> >> /G >> >> 2016-03-01 15:34 GMT+01:00 <jmeru...@gmail.com>: >> >>> Thank you Gunnar. That's a good idea. There is only one thing which does >>> not work yet. The two (or more) IQueryable are not combined via "OR" but >>> via "AND" >>> >>> Now: >>> >>> SELECT * >>> FROM bla as b >>> WHERE b.Value = 20 >>> and (1 /* @p3 */ = 1 >>> or b.Id in (SELECT ....) >>> >>> >>> But it should: >>> >>> SELECT * >>> FROM bla as b >>> WHERE b.Value = 20 >>> OR (1 /* @p3 */ = 1 >>> or b.Id in (SELECT ....) >>> >>> >>> This condition is created by PredicateBuilder.True<Class>() >>> 1 /* @p3 */ = 1 >>> >>> >>> Code: >>> var predicate = PredicateBuilder.True<Class>(); >>> predicate = predicate.Or(p => object.ExtendQuery().Select(x => >>> x.Id).Contains(p.Id)); >>> var combinedIQueryable = allUserNotes.Where(predicate); >>> >>> >>> >>> >>> Am Montag, 29. Februar 2016 15:29:41 UTC+1 schrieb Gunnar Liljas: >>>> >>>> You could use a PredicateBuilder (LinqKit) >>>> >>>> var predicate=PredicateBuilder.False<Person>(); >>>> >>>> foreach(var subquery in listOfIQueryablePerson) >>>> { >>>> predicate = predicate.Or(p=>subquery.Contains(p.id)) >>>> } >>>> >>>> var combinedIQueryable = allPersons.Where(predicate); >>>> >>>> >>>> 2016-02-29 9:32 GMT+01:00 <jmer...@gmail.com>: >>>> >>>>> Hi Oskar, >>>>> thanks for your response. Sorry, I forgot one thing to mention. >>>>> In the part of code where I need to combine the IQueryable I have got >>>>> some external objects in a list which provide methods which return the >>>>> IQueryable to combine. >>>>> So I have s.th. like this: >>>>> >>>>> foreach(var subquery in listOfIQueryablePerson) >>>>> { >>>>> combinedIQueryable = from p allPersons >>>>> where subquery.Contains(p.id) >>>>> || combinedIQueryable.Contains(p.id); >>>>> } >>>>> >>>>> The code above fits my requirements but it is not very nice and hasn't >>>>> a good performance. Is there any other solution for that? >>>>> >>>>> Thanks >>>>> >>>>> >>>>> >>>>> >>>>> Am Freitag, 26. Februar 2016 12:39:38 UTC+1 schrieb Oskar Berggren: >>>>>> >>>>>> var q1 = from p in Person >>>>>> where whatever >>>>>> select p.id; >>>>>> >>>>>> >>>>>> var q2 = from p in Person >>>>>> where whatever >>>>>> select p.id; >>>>>> >>>>>> >>>>>> var qC = from p in Person >>>>>> where q1.Contains(p.id) || q2.Contains(p.id) >>>>>> select p; >>>>>> >>>>>> q1 and q2 will be used as subqueries when the SQL is formed. >>>>>> >>>>>> /Oskar >>>>>> >>>>>> >>>>>> >>>>>> 2016-02-26 10:25 GMT+00:00 <jmer...@gmail.com>: >>>>>> >>>>>>> Hi all, >>>>>>> is there a possibility to combine several IQueryable without execute >>>>>>> the query? >>>>>>> >>>>>>> Pseudocode: >>>>>>> >>>>>>> var q1 = (IQueryable<Person>).....;var q2 = (IQueryable<Person>).....; >>>>>>> >>>>>>> >>>>>>> var q = q1.Union(q2); >>>>>>> >>>>>>> >>>>>>> or >>>>>>> >>>>>>> SELECT * >>>>>>> FROM Table1 >>>>>>> WHERE id IN >>>>>>> (Result ids of IQueryable1) >>>>>>> OR >>>>>>> (Result ids of IQueryable2) >>>>>>> >>>>>>> I achieved a solution by using Disjunction of Queryover. As result I >>>>>>> need an IQueryable without the query has been executed. So a solution >>>>>>> can >>>>>>> also be if it is possible to convert IQueryover to IQueryable. >>>>>>> >>>>>>> Thanks in advance >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "nhusers" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to nhusers+u...@googlegroups.com. >>>>>>> To post to this group, send email to nhu...@googlegroups.com. >>>>>>> Visit this group at https://groups.google.com/group/nhusers. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "nhusers" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to nhusers+u...@googlegroups.com. >>>>> To post to this group, send email to nhu...@googlegroups.com. >>>>> Visit this group at https://groups.google.com/group/nhusers. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "nhusers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to nhusers+unsubscr...@googlegroups.com. >>> To post to this group, send email to nhusers@googlegroups.com. >>> Visit this group at https://groups.google.com/group/nhusers. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to nhusers+unsubscr...@googlegroups.com. >> To post to this group, send email to nhusers@googlegroups.com. >> Visit this group at https://groups.google.com/group/nhusers. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to nhusers+unsubscr...@googlegroups.com. > To post to this group, send email to nhusers@googlegroups.com. > Visit this group at https://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to nhusers+unsubscr...@googlegroups.com. To post to this group, send email to nhusers@googlegroups.com. Visit this group at https://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.