Complex PredicateExpression

Posts   
 
    
ntext
User
Posts: 8
Joined: 11-May-2009
# Posted on: 30-Jul-2009 13:16:30   

WHERE

((table1.foo1 = "10" and table1.foo2 = "20" and table1.foo3 = "30" and table1.foo4 = "40" and table1.foo5 = "50")

OR

(Table2.foo1 = "10" or Table2.foo2 = "20" or Table2.foo3 = "30")

OR

(Table3.foo1 = "10" or Table3.foo2 = "20" or Table3.foo3 = "30")

OR

(Table4.foo1 = "10" or Table4.foo2 = "20" or Table4.foo3 = "30")

OR

(Table5.foo1 = "10" or Table5.foo2 = "20" or Table5.foo3 = "30"))

How can I build this with PredicateExpression?

IPredicateExpression selectFull = new PredicateExpression();

IPredicateExpression selectTable1 = new PredicateExpression(); selectTable1.Add(table1entityfields.foo1 == "10"); selectTable1.Add(table1entityfields.foo2 == "20"); selectTable1.Add(table1entityfields.foo3 == "30"); selectTable1.Add(table1entityfields.foo4 == "40"); selectTable1.Add(table1entityfields.foo5 == "50");

selectFull.Add(selectTabl1);

IPredicateExpression selectTable2 = new PredicateExpression(); selectTable2.AddWithOr(table2entityfields.foo1 == "10"); selectTable2.AddWithOr(table2entityfields.foo2 == "20"); selectTable2.AddWithOr(table2entityfields.foo3 == "30");

selectFull.Add(selectTabl2);

IPredicateExpression selectTable3 = new PredicateExpression(); selectTable3.AddWithOr(table3entityfields.foo1 == "10"); selectTable3.AddWithOr(table3entityfields.foo2 == "20"); selectTable3.AddWithOr(table3entityfields.foo3 == "30");

selectFull.Add(selectTabl3);

and so on.....

but it doesnt bind the same amount of entity with the above sql statement binds.

am I missing something?

and also how can I see the sql statemen before/after Collection.GetMulti() method?

arschr
User
Posts: 894
Joined: 14-Dec-2003
# Posted on: 30-Jul-2009 18:40:56   
IPredicateExpression selectTable2 = new PredicateExpression();
selectTable2.AddWithOr(table2entityfields.foo1 == "10");
selectTable2.AddWithOr(table2entityfields.foo2 == "20");
selectTable2.AddWithOr(table2entityfields.foo3 == "30");

selectFull.Add(selectTabl2);

try changing last line of quoted code to:

selectFull.AddWithOr(selectTabl2);

where you need or's

MTrinder
User
Posts: 1461
Joined: 08-Oct-2008
# Posted on: 30-Jul-2009 23:15:07   

+1 brownie point to @arschr simple_smile

Matt