Linq DateTime Format, comment l’utiliser ?/Convertir ?

la programmation


Cher Monsieur,

Aidez-moi à convertir le format datetime LINQ

Exemple:

1, mardi 26 janvier 2012 (ou)

2, mar. 26 janvier 2012

Donnez-moi des solutions ?

Par mohan

Solution 1

VB
YearMonth = r.SomeDateTime.ToString("dddd, MMMM yyyy")

Solution 3

le linq connaît les méthodes de conversion, “ToString()”, donc lorsque vous obtenez les données, utilisez des énumérables comme
var selectQuery = from add in db.address.asEnumerable() ;

alors maintenant vous pouvez utiliser les méthodes convert ou “tostring”.

Solution 4

(à partir du nom de classe dans time.table, sélectionnez t.Date).ToList().Select(d => d.ToString(“aaaa-MM-jj”);
essayez ça marche …….

Solution 5

C#
var selectQuery=from add in db.address
                 select add.myDate.toString("{0:dddd, MMMM d, yyyy}");

selectQuery.Distinct();

essaye ça..

Salutations,
nichant

Solution 7

Formatage de l’horodatage côté serveur

Parfois, il est utile de formater côté serveur. Le regroupement des horodatages avec une résolution inférieure à la seconde en groupes d’une heure ou d’une journée est un exemple.

Dans mon cas d’utilisation, nous obtenons 700 000 nouveaux enregistrements/jour. Le côté serveur peut donc être beaucoup plus rapide. Dans ce cas, 2,5 millions d’enregistrements sont regroupés en 4 jours.

L’application d’AsEnumerable fonctionne, mais prendra environ 40 minutes (2 500 secondes). Ceci est extrapolé à partir du retour de 1 000/s.

Le regroupement côté serveur prend environ 0,7 seconde. Ceci est mesuré.

J’utilise une télécommande très lente, mais c’est exactement le point. Les bases de données hébergées renvoient toujours des résultats via le réseau, donc l’agrégation sur le serveur de base de données permet au moteur de base de données de faire ce pour quoi il a été conçu, localement.

Certaines opérations comme toupper() ou le formatage de chaque enregistrement doivent être effectuées localement si possible. Le LinqToSQL/EF pour formater la date n’est pas très difficile, mais le SQL résultant est assez compliqué.

L’ajout de délimiteurs est destiné aux humains et n’est pas nécessaire pour le regroupement. Même les méthodes PadLeft() ne sont pas nécessaires dans la plupart des cas, mais elles rendent la date/heure résultante facile à trier lexicalement et à lire.

Dans cet exemple, j’ai défini Hour, Min et Sec sur 00, pour regrouper les jours.
Pour regrouper par heure, décommentez :

let Hour = Date.Hour.ToString().PadLeft(2, '0')
//let Hour = "00"

Ceci est juste un exemple rapide et sale. pas le code le plus rapide de tous les temps.

Le simple fait de le faire côté serveur l’obtient à partir de 40 secondes. à moins d’une seconde. J’ai donc fini pour l’instant.

BTW, ce script s’exécute sur LinqPad dans mon environnement uniquement, alors modifiez-le en fonction de vos besoins, mais ne me demandez pas de résoudre votre problème spécifique.

void Main()
{
	var query =
	from cat in CATOperations

	let Date = cat.OperationDateTime

	let Year = Date.Year.ToString().PadLeft(4, '0')
	let Month = Date.Month.ToString().PadLeft(2, '0')
	let Day = Date.Day.ToString().PadLeft(2, '0')
	//let Hour = Date.Hour.ToString().PadLeft(2, '0')
	let Hour = "00"
	//let Minute = Date.Minute.ToString().PadLeft(2, '0')
	let Minute = "00"
	//let Second = Date.Second.ToString().PadLeft(2, '0')
	let Second = "00"

	let dateGroup = Year
		+ '/'
		+ Month
		+ '/'
		+ Day
		+ " "
		+ Hour
		+ ":"
		+ Minute
		+ ":"
		+ Second

	where Date > new DateTime(2024, 1, 9)
	//select new{Date, dateGroup};

	group 1 by dateGroup into g
	orderby g.Key
	let count = g.Count()

	select new { g.Key, count };

	query.Dump();
}

コメント

タイトルとURLをコピーしました