Question: I know i can do this

```
var nv = HttpUtility.ParseQueryString(req.RawUrl);

```

But is there a way to convert this back to a url?

```
var newUrl = HttpUtility.Something("/page", nv);

```

Answer: 
The short answer is to use `.ToString()` on the `NameValueCollection` and combine it with the original url.

However, I'd like to point out a few things:

You cant use `HttpUtility.ParseQueryString` on `Request.RawUrl`. The `ParseQueryString()` method is looking for a value like this: `?var=value&var2=value2`.

If you want to get a `NameValueCollection` of the `QueryString` parameters just use `Request.QueryString()`.

```
var nv = Request.QueryString;

```

To rebuild the URL just use nv.ToString().

```
string url = String.Format("{0}?{1}", Request.Path, nv.ToString());

```

If you are trying to parse a url string instead of using the `Request` object use `Uri` and the `HttpUtility.ParseQueryString` method.

```
Uri uri = new Uri("<THE URL>");
var nv = HttpUtility.ParseQueryString(uri.Query);
string url = String.Format("{0}?{1}", uri.AbsolutePath, nv.ToString());

```
This did the trick for me:

```
public ActionResult SetLanguage(string language = "fr_FR")
        {            
            Request.UrlReferrer.TryReadQueryAs(out RouteValueDictionary parameters);            
            parameters["language"] = language;            
            return RedirectToAction("Index", parameters);            
        }

```