using Microsoft.AspNetCore.Http.Extensions;
public static void Main()
var tuple = RemoveQueryStringByKeys("https://beta.bds.lc/ban-dat-duong-luong-van-nho-xa-long-hoa-prj-la-maison-de-can-gio/bai-viet-duoc-them-tu-postman-tu-dong-pr31508143?utm_source&utm_campaign=456&price=5", new string[]{"utm_"});
Console.WriteLine(item1);
Console.WriteLine(item2);
public static Tuple<string, string> RemoveQueryStringByKeys(string url, string[] keys)
var newQueryString = HttpUtility.ParseQueryString(uri.Query);
QueryBuilder queryBuilder = new QueryBuilder();
foreach (var key in keys)
var findKeys = newQueryString.AllKeys.Where(k => k != null && (k.Equals(key) || k.StartsWith(key)));
foreach (var findKey in findKeys)
queryBuilder.Add(findKey, newQueryString[findKey]);
newQueryString.Remove(findKey);
string pagePathWithoutQueryString = uri.GetLeftPart(UriPartial.Path);
var finalUrl = newQueryString.Count > 0
? String.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString)
: pagePathWithoutQueryString;
var validQueryString = queryBuilder.ToQueryString();
Tuple<string, string> tupleResult =
new Tuple<string, string>(finalUrl, validQueryString.ToString());