<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwiz.co.uk/rss_namespace/">
 <channel>
  <title>DevForce Community Forum : PredicateBuilder with ands / ors</title>
  <link>http://www.ideablade.com/forum/</link>
  <description>This is an XML content feed of; DevForce Community Forum : DevForce 2012 : PredicateBuilder with ands / ors</description>
  <pubDate>Fri, 10 Apr 2026 18:56:03 -700</pubDate>
  <lastBuildDate>Tue, 29 Apr 2014 10:55:02 -700</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.69</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>www.ideablade.com/forum/RSS_post_feed.asp?TID=4689</WebWizForums:feedURL>
  <image>
   <title>DevForce Community Forum</title>
   <url>http://www.ideablade.com/forum/forum_images/IdeaBlade_logo_tm.png</url>
   <link>http://www.ideablade.com/forum/</link>
  </image>
  <item>
   <title>PredicateBuilder with ands / ors : Assuming TSFinish is a property...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=4689&amp;PID=17543#17543</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=912" rel="nofollow">DenisK</a><br /><strong>Subject:</strong> 4689<br /><strong>Posted:</strong> 29-Apr-2014 at 10:55am<br /><br />Assuming TSFinish is a property of MembersAndJobHistory,<div><br></div><div>var p7 = PredicateBuilder.Make(typeof(MembersAndJobHistory), "TSFinish", FilterOperator.IsGreaterThanOrEqualTo, batch.PayPeriod);</div><div><br></div><div>var p8 = PredicateBuilder.Make(typeof(MembersAndJobHistory), "TSFinish", FilterOperator.IsEqualTo, null);</div><div><br></div><div>var p9 = p7.Or(p8);</div><div><br></div><div>compositePred = CombinePreds(p1, p2, p3, p4, p5, p6, p9);</div>]]>
   </description>
   <pubDate>Tue, 29 Apr 2014 10:55:02 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=4689&amp;PID=17543#17543</guid>
  </item> 
  <item>
   <title>PredicateBuilder with ands / ors : I know how to use Predicate Descriptions...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=4689&amp;PID=17536#17536</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=202" rel="nofollow">BillG</a><br /><strong>Subject:</strong> 4689<br /><strong>Posted:</strong> 28-Apr-2014 at 1:41pm<br /><br />I know how to use Predicate Descriptions with Ands.<br><br>I have the following code<br><br><pre style="font-family:C&#111;nsolas;font-size:13;color:black;:white;"><span style="color:blue;">public</span>&nbsp;<span style="color:#2b91af;">IEnumerable</span>&lt;<span style="color:#2b91af;">MembersAndJobHistory</span>&gt;&nbsp;GetMembersForBatchByEmployer(<span style="color:#2b91af;">Batch</span>&nbsp;batch)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">IPredicateDescription</span>&nbsp;compositePred;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">PredicateDescription</span>&nbsp;p1&nbsp;=&nbsp;<span style="color:blue;">null</span>,&nbsp;p2&nbsp;=&nbsp;<span style="color:blue;">null</span>,&nbsp;p3&nbsp;=&nbsp;<span style="color:blue;">null</span>,&nbsp;p4&nbsp;=&nbsp;<span style="color:blue;">null</span>,&nbsp;p5&nbsp;=&nbsp;<span style="color:blue;">null</span>,&nbsp;p6&nbsp;=&nbsp;<span style="color:blue;">null</span>; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.Make(<span style="color:blue;">typeof</span>(<span style="color:#2b91af;">MembersAndJobHistory</span>),&nbsp;<span style="color:#a31515;">"Status"</span>,&nbsp;<span style="color:#2b91af;">FilterOperator</span>.IsEqualTo,&nbsp;<span style="color:#a31515;">"A"</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.Make(<span style="color:blue;">typeof</span>&nbsp;(<span style="color:#2b91af;">MembersAndJobHistory</span>),&nbsp;<span style="color:#a31515;">"EmployerNo"</span>,&nbsp;<span style="color:#2b91af;">FilterOperator</span>.IsEqualTo,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;batch.EmployerNo);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p3&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.Make(<span style="color:blue;">typeof</span>(<span style="color:#2b91af;">MembersAndJobHistory</span>),&nbsp;<span style="color:#a31515;">"PayVia"</span>,&nbsp;<span style="color:#2b91af;">FilterOperator</span>.IsEqualTo,&nbsp;<span style="color:#a31515;">"E"</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">if</span>&nbsp;(!<span style="color:#2b91af;">CommonControl</span>.IsControlTrue(<span style="color:#a31515;">"NoMonthlyDues"</span>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p4&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.Make(<span style="color:blue;">typeof</span>(<span style="color:#2b91af;">MembersAndJobHistory</span>),&nbsp;<span style="color:#a31515;">"Dues"</span>,&nbsp;<span style="color:#2b91af;">FilterOperator</span>.IsEqualTo,&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">if</span>&nbsp;(batch.BillYN&nbsp;!=&nbsp;<span style="color:blue;">null</span>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p5&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.Make(<span style="color:blue;">typeof</span>(<span style="color:#2b91af;">MembersAndJobHistory</span>),&nbsp;<span style="color:#a31515;">"BillYN"</span>,&nbsp;<span style="color:#2b91af;">FilterOperator</span>.IsEqualTo,&nbsp;batch.BillYN);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p6&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.Make(<span style="color:blue;">typeof</span>(<span style="color:#2b91af;">MembersAndJobHistory</span>),&nbsp;<span style="color:#a31515;">"TSStart"</span>,&nbsp;<span style="color:#2b91af;">FilterOperator</span>.IsLessThanOrEqualTo,&nbsp;batch.PayPeriodEnd); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compositePred&nbsp;=&nbsp;CombinePreds(p1,&nbsp;p2,&nbsp;p3,&nbsp;p4,&nbsp;p5,&nbsp;p6); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">var</span>&nbsp;query&nbsp;=&nbsp;Manager.MembersAndJobHistories&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Where(compositePred)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.OrderBy(m&nbsp;=&gt;&nbsp;m.SocSecNo); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">var</span>&nbsp;results&nbsp;=&nbsp;query.Execute();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">return</span>&nbsp;results;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><span style="color:blue;">       public</span>&nbsp;<span style="color:#2b91af;">IPredicateDescription</span>&nbsp;CombinePreds(<span style="color:blue;">params</span>&nbsp;<span style="color:#2b91af;">PredicateDescription</span>&#091;&#093;&nbsp;preds)&nbsp;&nbsp;&nbsp;   {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <span style="color:blue;">var</span>&nbsp;nonNullPreds&nbsp;=&nbsp;preds.Where(pd&nbsp;=&gt;&nbsp;pd&nbsp;!=&nbsp;<span style="color:blue;">null</span>).ToArray();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <span style="color:blue;">var</span>&nbsp;result&nbsp;=&nbsp;<span style="color:#2b91af;">PredicateBuilder</span>.And(nonNullPreds);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <span style="color:blue;">return</span>&nbsp;result;&nbsp;&nbsp;&nbsp;   }<br><br>Now i need to add two more predicates to the query. Basically i want to And an Or. For example, and where<br>&nbsp;TSFinish &gt;= batch.PayPeriod or TSFinish is null<br><br>How do i fix my code to handle these 2 new predicates?<br><br>Bill<br><br></pre><br>]]>
   </description>
   <pubDate>Mon, 28 Apr 2014 13:41:02 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=4689&amp;PID=17536#17536</guid>
  </item> 
 </channel>
</rss>