private static string CreateGeoDistanceFilter(GeoDistanceFilter geoDistanceFilter, IList <Field> availableFields)
        {
            string result;

            var availableField = availableFields.Get(geoDistanceFilter.FieldName);

            if (availableField != null)
            {
                var distance = AzureSearchHelper.GetGeoDistanceExpression(availableField.Name, geoDistanceFilter.Location);
                result = string.Format(CultureInfo.InvariantCulture, "{0} le {1}", distance, geoDistanceFilter.Distance);
            }
            else
            {
                result = AzureSearchHelper.NonExistentFieldFilter;
            }

            return(result);
        }
        private static string GetSortingField(SortingField sortingField, IList <Field> availableFields)
        {
            string result = null;

            var availableField = availableFields.Get(sortingField.FieldName);

            if (availableField != null)
            {
                var geoSorting = sortingField as GeoDistanceSortingField;

                var fieldName = geoSorting == null
                    ? availableField.Name
                    : AzureSearchHelper.GetGeoDistanceExpression(availableField.Name, geoSorting.Location);

                result = string.Join(" ", fieldName, sortingField.IsDescending ? "desc" : "asc");
            }
            else if (sortingField.FieldName == "score")
            {
                result = string.Join(" ", "search.score()", sortingField.IsDescending ? "desc" : "asc");
            }

            return(result);
        }