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.
