C # Supprimer les caractères non valides du nom de fichier

J'ai des données provenant d'un champ de type nvarchar de la base de données SQL server via FE3.5. Cette chaîne est utilisée pour créer un nom de fichier et le besoin de supprimer les caractères non valides et essayé de suivre les options, mais aucun d'entre eux travaille. S'il vous plaît suggérer pourquoi c'est un tel compréhensible mystère? Suis-je en train de faire quelque chose de mal?

Je suis allé, bien que presque toutes les questions sur ce site.. et maintenant l'affichage consolidé de la question de toutes les suggestions et réponses à d'autres questions similaires.

UPD: La Question n'était pas liée..Toutes ces options fonctionnent. Alors les poster à la communauté wiki.

public static string CleanFileName1(string filename)
{            
    string file = filename;                                            
    file = string.Concat(file.Split(System.IO.Path.GetInvalidFileNameChars(), StringSplitOptions.RemoveEmptyEntries));

    if (file.Length > 250)
    {
        file = file.Substring(0, 250);
    }
    return file;
 }

public static string CleanFileName2(string filename)
{
    var builder = new StringBuilder();
    var invalid = System.IO.Path.GetInvalidFileNameChars();
    foreach (var cur in filename)
    {
        if (!invalid.Contains(cur))
        {
            builder.Append(cur);
        }
    }
    return builder.ToString();
}

public static string CleanFileName3(string filename)
{                                    
    string regexSearch = string.Format("{0}{1}",
        new string(System.IO.Path.GetInvalidFileNameChars()),
        new string(System.IO.Path.GetInvalidPathChars()));
    Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
    string file = r.Replace(filename, "");

    return file;
}       

public static string CleanFileName4(string filename)
{
    return new String(filename.Except(System.IO.Path.GetInvalidFileNameChars()).ToArray());
}   

public static string CleanFileName5(string filename)
{            
    string file = filename;

    foreach (char c in System.IO.Path.GetInvalidFileNameChars())
    {
        file = file.Replace(c, '_');
    }                                 
    return file;
}   

source d'informationauteur