Yes, there is two remaining problems. /Oskar
2016-03-01 17:11 GMT+00:00 Gunnar Liljas <[email protected]>: > 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 <[email protected]>: > >> 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 <[email protected]>: >> >>> 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 <[email protected]>: >>> >>>> 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 <[email protected]>: >>>>> >>>>>> 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 <[email protected]>: >>>>>>> >>>>>>>> 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 [email protected]. >>>>>>>> To post to this group, send email to [email protected]. >>>>>>>> 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 [email protected]. >>>>>> To post to this group, send email to [email protected]. >>>>>> 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 [email protected]. >>>> To post to this group, send email to [email protected]. >>>> 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 [email protected]. >>> To post to this group, send email to [email protected]. >>> 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 [email protected]. >> To post to this group, send email to [email protected]. >> 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 [email protected]. > To post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
