Paylaşımın için teşekkürler. Biraz daha gelişmiş bir metodda ben paylaşayım.

public static string ToSeoUrl(this string url)
        {
            url = url.Replace("ş", "s");
            url = url.Replace("Ş", "s");
            url = url.Replace("İ", "i");
            url = url.Replace("I", "i");
            url = url.Replace("ı", "i");
            url = url.Replace("ö", "o");
            url = url.Replace("Ö", "o");
            url = url.Replace("ü", "u");
            url = url.Replace("Ü", "u");
            url = url.Replace("Ç", "c");
            url = url.Replace("ç", "c");
            url = url.Replace("ğ", "g");
            url = url.Replace("Ğ", "g");
            url = url.Replace(" ", "-");
            url = url.Replace("---", "-");
            url = url.Replace("?", "");
            url = url.Replace("/", "");
            url = url.Replace(".", "");
            url = url.Replace("'", "");
            url = url.Replace("#", "");
            url = url.Replace("%", "");
            url = url.Replace("&", "");
            url = url.Replace("*", "");
            url = url.Replace("!", "");
            url = url.Replace("@", "");
            url = url.Replace("+", "");

            url = url.ToLower();
            url = url.Trim();

            // tüm harfleri küçült
            string encodedUrl = (url ?? "").ToLower();

            // & ile " " yer değiştirme
            encodedUrl = Regex.Replace(encodedUrl, @"\&+", "and");

            // " " karakterlerini silme
            encodedUrl = encodedUrl.Replace("'", "");

            // geçersiz karakterleri sil
            encodedUrl = Regex.Replace(encodedUrl, @"[^a-z0-9]", "-");

            // tekrar edenleri sil
            encodedUrl = Regex.Replace(encodedUrl, @"-+", "-");

            // karakterlerin arasına tire koy
            encodedUrl = encodedUrl.Trim('-');

            return encodedUrl;
        }