Como gerar um slug de url limpo em C #

public static string ToUrlSlug(string value){ 

//First to lower case
value = value.ToLowerInvariant();

//Remove all accents
var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value);

value = Encoding.ASCII.GetString(bytes);

//Replace spaces
value = Regex.Replace(value, @"s", "-", RegexOptions.Compiled);

//Remove invalid chars
value = Regex.Replace(value, @"[^wsp{Pd}]", "",RegexOptions.Compiled);

//Trim dashes from end
value = value.Trim('-', '_');

//Replace double occurences of - or _
value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled);

return value ;
}