This is how I finally did it:
var status = queryParams.FirstOrDefault(q => q.Key == "status").Value;
var entity = queryParams.FirstOrDefault(q => q.Key == "entity").Value;
var start = queryParams.FirstOrDefault(q => q.Key == "start").Value;
if(!string.IsNullOrEmpty(status))
{
query.Where(r => r.RowStatus == Convert.ToInt32(status));
}
if (!string.IsNullOrEmpty(entity))
{
query.Where(r => r.EntityType == entity);
}
//Ensure that this should be the last filter criteria to be applied
if (!string.IsNullOrEmpty(start))
{
query.Skip(Convert.ToInt32(start));
}
var count = query.RowCount();
var results = query.Take(apiUser.ApiLimit).List().Select(c => _cryptography.Decrypt(c.Json)).ToList();