public string BuildQuery <T>(QueryParams <T> queryParams) where T : QueryField { try { StringBuilder stringBuilder = new StringBuilder(); if (queryParams != null) { foreach (T key in queryParams.SortFields.Keys) { if (queryParams.SortFields[key].Equals((object)SortType.SORT_ASC)) { stringBuilder.Append("&sortAsc="); stringBuilder.Append(key.Value()); } else { stringBuilder.Append("&sortDesc="); stringBuilder.Append(key.Value()); } } if (queryParams.Fields.Count > 0 || queryParams.GetMetadataFields().Count > 0) { stringBuilder.Append("&fields="); int num1 = 0; foreach (T field in queryParams.Fields) { QueryField queryField = (QueryField)field; stringBuilder.Append(queryField.Value()); ++num1; if (num1 != queryParams.Fields.Count) { stringBuilder.Append(","); } } if (num1 > 0 && queryParams.GetMetadataFields().Count > 0) { stringBuilder.Append(","); } int num2 = 0; foreach (string metadataField in queryParams.GetMetadataFields()) { stringBuilder.Append(metadataField); ++num2; if (num2 != queryParams.GetMetadataFields().Count) { stringBuilder.Append(","); } } } if (queryParams.Page.HasValue) { stringBuilder.Append("&page="); stringBuilder.Append((object)queryParams.Page); } if (queryParams.Offset.HasValue) { stringBuilder.Append("&offset="); stringBuilder.Append((object)queryParams.Offset); } if (queryParams.PageSize.HasValue) { stringBuilder.Append("&pageSize="); stringBuilder.Append((object)queryParams.PageSize); } if (queryParams.Filter != null && queryParams.Filter.GetFilterText() != null && !string.IsNullOrEmpty(queryParams.Filter.GetFilterText())) { stringBuilder.Append("&filter="); stringBuilder.Append(queryParams.Filter.GetFilterText()); } } return(stringBuilder.ToString()); } catch (Exception ex) { throw new VCloudException(ex.Message); } }