2009-10-29 4 views
0

j'ai le code suivant, mais il ne fonctionne pas à comapre une date convertie chaîne de forme tout organisme peut me aider sur ce grâce à l'avanceLinq Date de problème comparision

 DateTime dt = DateTime.Now; 
     List<DateTime> dateTimes = new List<DateTime>(); 
     dateTimes.Add(dt); 
     dateTimes.Add(dt); 
     dateTimes.Add(dt); 
     string str = dt.ToString(); 
     DateTime myDateTime = DateTime.Parse(str); 

     var query = from d in dateTimes 
        where d == myDateTime 
        select d; 
     foreach (var result in query) 
     { 
      Console.WriteLine(result); 
     } 
     Console.Read(); 

Répondre

1

La raison est que la méthode ToString tronque le temps réel légèrement, de sorte que le résultat n'est pas le même lorsque vous revenez dans l'autre sens.

Remplacez votre première ligne, par exemple, avec

DateTime dt = new DateTime(2009,10,29,16,35,56); 

et vous verrez ce qui se passe.

0

Je vous recommande de ne pas utiliser ToString() si fréquemment lorsque vous avez besoin de basculer entre les types, la meilleure façon est d'utiliser un objet personnalisé pour au moins des versions spécialisées de méthodes de comparaison comme CompareTo.

essayer cette

DateTime dt = DateTime.Now; Liste dateTimes = new Liste(); dateTimes.Add (dt); dateTimes.Add (dt); dateTimes.Add (dt); chaîne str = dt.ToString(); DateTime myDateTime = DateTime.Parse (str);

var query = from d in dateTimes 
       where d.CompareTo(myDateTime) == 1 
       select d; 
    foreach (var result in query) 
    { 
     Console.WriteLine(result); 
    } 
    Console.Read(); 

Cordialement,

Usman Afzal

0

j'ai résolu le problème solution est de ne pas enregistrer l'horodatage au format datetime dans la chaîne insetead vous devez convertir l'objet datetime à ses tiques corrsponding et magasin qui coche dans la variable chaîne et après le mot lorsque vous voulez faire l'objet date utilisez la ligne de code suivante DateTime myDateTime = new DateTime (int64.Parse (strDateTimeTicks)); cela retournera l'objet date-heure exact