Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Convertir une chaîne en valeur datetime dans LINQ

Cela vaut probablement la peine de faire l'analyse localement plutôt que dans la base de données, via AsEnumerable :

var query = db.tb1.Select(tb => tb.dt)
                  .AsEnumerable() // Do the rest of the processing locally
                  .Select(x => DateTime.ParseExact(x, "yyyyMMdd",
                                                CultureInfo.InvariantCulture));

La sélection initiale consiste à s'assurer que seule la colonne pertinente est récupérée, plutôt que l'entité entière (seulement pour que la majeure partie soit supprimée). J'ai également évité d'utiliser un type anonyme car cela semble inutile ici.

Notez comment j'ai spécifié la culture invariante en passant - vous ne le faites certainement pas voulez simplement utiliser la culture actuelle. Et j'ai changé le modèle utilisé pour l'analyse, car cela ressemble à votre source les données sont en yyyyMMdd formater.

Bien sûr, si possible, vous devez modifier le schéma de la base de données pour stocker les valeurs de date dans une colonne basée sur la date, plutôt que sous forme de texte.