2010-02-05 6 views
1

J'ai une liste qui contient des dates au format GMT.Utilisation d'expressions Lambda pour commander une liste par date GMT

Quelle est la manière la plus élégante de s'assurer que les commandes d'expression Lambda suivantes sont classées dans le champ de date comme GMT?

ProductsList.OrderBy(Product => Product.Added).ToList(); 
+0

Que voulez-vous dire par « au format GMT »? Quel est le type de la propriété Added? –

+0

Temps moyen de Greenwich. Added est un champ DateTime extrait de la base de données sql. BTW Je savais que cette question était un piège à miel Jon Skeet! LOL; -> –

+1

En quoi le GMT est-il pertinent? Est-ce que la propriété 'Added' contient des dates pour différents fuseaux horaires? S'ils sont tous dans le même fuseau horaire, la commande ne changera pas si vous ne faites que trier par date ou si vous convertissez d'abord toutes les dates en GMT. Je suppose qu'il me manque quelque chose ici ... –

Répondre

2

Les opérateurs LINQ encastrables utilisent les opérations de tri attendues (pour LINQ-à-objets, il le fait en utilisant Comparer<T>.Default Votre expression lambda est fortement typé, dans les coulisses du compilateur déduit des génériques pour vous - il est. en fait:

var newList = Enumerable.OrderBy<Product,DateTime>(
     ProductsList, Product => Product.Added).ToList(); 

déjà sait est un DateTime, donc la seule fois où vous auriez besoin de faire quelque chose en plus ici est de savoir si les dates contiennent une gamme de différents fuseaux horaires Bien sûr, au sein a. fuseau horaire vous s Hould bien, mais vous pouvez (si vous étiez paranoïaque) convertir tout UTC - Je ne pense vous devez faire dans votre cas, mais:

var newList = ProductsList.OrderBy(
     Product => Product.Added.ToUniversalTime()).ToList(); 

Notez que cela crée en fait un deuxième liste (cela ne change pas l'ordre de la liste originale); vous pouvez utiliser la code from here pour faire une place à trier par lambdas:

ProductsList.Sort(Product => Product.Added); 
+0

Merci, tout ce dont j'ai besoin! –

Questions connexes