LINQ: Convertir n'importe quelle chaîne vide en Null

c# linq sqlbulkcopy

Question

J'ai une liste contenant énormément de données et plus de cent colonnes. Je SQLBulkCopy convertir la liste entière en DataTable et utiliser SQLBulkCopy pour insérer par lots toutes les données dans la base de données.

Tout va bien sauf que certains champs peuvent être vides. Et pour une raison quelconque, certains des champs vides provoquent une exception de mise en forme après la conversion en DataTable et pendant l'insertion de SQLBulkCopy . Après quelques travaux de recherche et développement, j'ai constaté que la conversion des champs vides en SQLBulkCopy NULL résolvait le problème d'insertion par lots à l'aide de SQLBulkCopy .

Puis-je utiliser LINQ pour trouver des champs vides dans la liste et les convertir en NULL ou DBNULL avant de convertir la liste en DataTable?

Même si je vais convertir la liste en DataTable mais je ne veux pas boucler chaque ligne et chaque cellule pour vérifier si la cellule est vide et convertir en null car cela peut affecter beaucoup les performances lorsque les données sont trop volumineuses .

Réponse populaire

Je ne peux répondre qu'à la toute première partie où vous pouvez remplacer tous les champs de chaîne vides par la valeur Null à l'aide d'une instruction conditionnelle.

public class Person
{
    public string Sex { get; set; }
    public string Name { get; set; }
}
private static void LinQ3()
{
    var namesList = new List<Person>();
    namesList.Add(new Person() { Sex = "M", Name = "Jonh" });
    namesList.Add(new Person() { Sex = "F", Name = string.Empty });
    namesList.Add(new Person() { Sex = "M", Name = string.Empty });

    var nullV = namesList.Select(x => new {
        Sex=x.Sex,
        nullableName= string.IsNullOrWhiteSpace(x.Name)?null: x.Name
    });
}

Cela retournera une liste (nullV) où le champ "Nom" contiendra des valeurs nulles pour chaque valeur vide du nom du champ. En outre, vous devez déclarer à chaque champ que vous souhaitez convertir les chaînes vides à l'aide de la même instruction conditionnelle.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi