Property to compare in Linq is different by criteria.
You could do something like this, but I don't know, whether it's a good idea:

Func&lt;ViewBooking,DateTime&gt; getDate = null;
switch(...)
{
    case ...:
    getDate = (ViewBooking item) =&gt; item.BookingDate;
    break;
}

pObjListBooking = pObjListBooking.Where(item =&gt; getDate(item) &gt;= startDate &amp;&amp; getDate(item) &lt; endDate);