IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linq Discussion :

Recuperer la date d'un type DateTime LinQ


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Wiink
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 63
    Par défaut Recuperer la date d'un type DateTime LinQ
    J'ai dans ma base de donnée des champs de type Datetime que je bind dans une data_grid de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    grid.ItemsSource = (from i in item
    select new
    {
       Du = i.DATESTART,
       Au = i.DATEEND,
       Lieu = i.PLACE,
    }).ToList();
    Je souhaite ne récupérer que la date, et non date+heure.

    J'ai testé bien des solutions, mais LinQ n'implémente pas toutes les méthodes du type DateTime.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Du = i.DATESTART.Value.Date,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Du = i.DATESTART.Value.Year,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Du = i.DATESTART.Value.ToShortDateString(),
    Les exceptions sont très vagues pour tout ces essais.

    J'utilise LinQ to SQL et du C#.NET 3.5

    Merci d'avance pour vos conseils.

  2. #2
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Qui peut le plus, peut le moins. Si tu as un objet de type DateTime, modifie ton GridView pour n'afficher que la date, si c'est ton souhait. Jette un oeil du côté du formatage de date.

  3. #3
    Membre confirmé Avatar de Wiink
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 63
    Par défaut
    Tu entend par là parcourir tout le datagrid avec un violent foreach qui modifie les champs dates ? Pas genial ... Et je doute que ça fonctionne étant donné que les données sont bindées.

  4. #4
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Utilises "DataFormatString" sur tes colonnes pour les formater.

  5. #5
    Membre confirmé Avatar de Wiink
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 63
    Par défaut
    Cette solution est en effet viable, merci.

    Mais j'ai par la suite besoin de le faire dans la requête LinQ, pour une comparaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where i.DATESTART.Value.Year == 2010
    Le problème revient, n'y a t-il aucun moyen de manipuler une date avec LinQ ?
    La doc indique pourtant que certaines methodes sont utilisables : http://msdn.microsoft.com/en-us/library/bb882657.aspx
    J'ai essayé la plupart, mais a chaque fois j'ai une exception du parseur.

    Autre info peut être utile :
    J'ai généré la class linQ avec DBMetal, les champs en base sont du type MySql DateTime

  6. #6
    Membre confirmé Avatar de Wiink
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 63
    Par défaut
    Citation Envoyé par neptune Voir le message
    Utilises "DataFormatString" sur tes colonnes pour les formater.
    Je ne trouve aucune ressource pour utiliser DataFormatString sur un datagrind bindé avec ItemsSource :



    Code cs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    try
    {
        grid_item_place.Columns.Clear();
     
     
        grid_item_place.ItemsSource = (from ie in db.itemexhibit
     
                                        select new
                                        {
                                            Lieu = e.NAME + " - " + e.PLACE,
                                            Du = e.DATESTART,
                                            Au = e.DATEEND
                                        }).ToList();
     
        // grid_item_place.Columns ... Je n'arrive pas a la propriété DataFormatString 
     
    }
    catch { Message.err("Aucun objet sélectionné."); }

    Quelqu'un peut il m'aider a remplir le trou ?
    merci

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Par défaut
    J'ai eu un problème similaire à l'instant (en fait, je cherchais une solution, et je suis tombé sur ce post )
    Vu que je viens de trouver une solution, j'en fait part, au cas ou...

    Alors, j'avais besoin de récupérer des éléments d'un jour donnée (au format DateTime) , sachant que la date de ces éléments est stocké au format DateTime également.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function method(pDate as DateTime) as List(of MyObject)
      dim res as List(Of MyObject)
      res = (From o1 as MyObject in _context.MyObjects select o1).ToList
      return (From o2 as MyObject in res where o2.DateProperty.Date = pDate.date select o2).ToList 
    end function
    Ce code fonctionne en ce qui me concerne.
    Je ne comprend pas trop le pourquoi du comment...
    Peut-être qu'il "fetch" le premier appel de requête et qu'alors il a accès au propriété des champs date ?

    J'espère que ça pourra t'aider à avancer
    Si de ton coté tu trouves LA solution, ça m'intéresse aussi

Discussions similaires

  1. [AC-2010] Extraire la date d'un type DateTime
    Par macakou99 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/01/2013, 21h37
  2. Réponses: 7
    Dernier message: 29/11/2010, 12h26
  3. Réponses: 1
    Dernier message: 08/07/2010, 16h28
  4. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 12h59
  5. Pour convertir les dates aux types "datetime" sous
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo