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] <javascript:>>:
>
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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.

Reply via email to