public string Translate <TBO>(Expression expression) where TBO : IBusinessObject { var bo = BoActivator.GetInstance(typeof(TBO)); boType = bo.GetType(); sb = new StringBuilder(); Visit(expression); var matchCollection = new Regex("'%(?<variable>('.*?'))%'").MatchNamedCaptures(sb.ToString()); WhereClause = matchCollection.ContainsKey("variable") ? sb.ToString().Replace(matchCollection["variable"], matchCollection["variable"].Trim('\'')) : sb.ToString(); var querySb = new StringBuilder($"SELECT * FROM {bo.ClassName} "); if (!string.IsNullOrEmpty(WhereClause)) { querySb.Append($"WHERE {WhereClause} "); } if (!string.IsNullOrEmpty(OrderBy)) { querySb.Append($"ORDER BY {OrderBy} "); } if (Skip.HasValue) { querySb.Append($"SKIP {Skip.Value} "); } if (Take.HasValue) { querySb.Append($"LIMIT {Take.Value} "); } return(querySb.ToString()); }