sql >> Database teknologi >  >> RDS >> Sqlserver

Konverter streng til datetime-værdi i LINQ

Det er nok værd bare at udføre parsingen lokalt i stedet for i databasen 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));

Det første valg er at sikre, at kun den relevante kolonne hentes i stedet for hele entiteten (kun for det meste af den, der skal kasseres). Jeg har også undgået at bruge en anonym type, da det ikke ser ud til at være nogen mening med det her.

Bemærk, hvordan jeg i øvrigt har specificeret den invariante kultur - det gør du næsten helt sikkert ikke vil bare bruge den nuværende kultur. Og jeg har ændret det mønster, der bruges til at analysere, da det lyder som din kilde data er i yyyyMMdd format.

Selvfølgelig, hvis det overhovedet er muligt, bør du ændre databaseskemaet til at gemme datoværdier i en datobaseret kolonne i stedet for som tekst.



  1. rake afbrudt! uinitialiseret konstant Mysql2

  2. Opret et skalerbart databaseskema til lagring af golfresultater

  3. Sådan forbinder du flutter til localhost mysql-database

  4. Tilgang til flere MySQL-forespørgsler med Node.js