Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

LINQ & Date Urgent

Îåêßíçóå áðü ôï ìÝëïò Ηλίας Κεκάκος. Τελευταία δημοσίευση από το μέλος Panagiotis Kefalidis στις 19-08-2009, 12:02. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-08-2009, 15:48 53080

    LINQ & Date Urgent

    Συγνώμη παιδιά αλλά χρειάζομαι επειγόντος την βοήθειά σας στο παρακάτω LINq

    Dim UnclosedContracts = From Contract In DatasetPurchases.Tables("ViewContracts").AsEnumerable() _
                                   Where Contract!ContractEndDate >= Today _
                                   Select Contract!ContractID, Contract!ContractMnemonic, Contract!ContractEndDate, Contract!SupplierNameOfCompany

    Δυστυχώς η Today δεν δουλεύει, αυτό που του λέω στο where είναι το ContractEndDate >= της σημερινής μέρας.

    Παρακαλώ για την όσο πιο γρήγορη απάντηση για να δουλέψει αυτό το select.

    Ευχαριστώ


  •  17-08-2009, 00:10 53081 σε απάντηση της 53080

    Απ: LINQ & Date Urgent

    στα πολυ γρηγορα-προχειρα που το κοιταξα πιστευω το εξεις.

    στην LINQ καλο ειναι να την τροφοδότης με περιεχομενο string ή οτι ακριβώς χρειάζεται, μονη της τα θαλασσώνει!

    παράδειγμα

    dim mydate as string = today.tostring (i kati paromio pou na sou dinei AKRIVOS tin morfi pou einai saved ta data sou)
    
    dim myLINQcollection= from items in mydatabase.mytatatable Where items.date = mydate ktl klt klt
    
    μπορει να θελει καμια φορα και 

    dim
    myLINQcollection= from items in mydatabase.mytatatable Where items.date = mydate.tostring

    glWink

    α ξεχασα

    δεν δοκιμάζεις καλύτερα και το NOW.tostring αντι για Today! ή παρε το now. σε οποιο format σε ενδιαφέρει.


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  17-08-2009, 13:10 53085 σε απάντηση της 53081

    Απ: LINQ & Date Urgent

    Σ' ευχαριστώ John δικό μου το λάθος. Προσπαθούσα να χρησιμοποιήσω την DATE() και όχι την TODAY() που δουλεύει περίφημα.

    Και πάλι σ' ευχαριστώ για την γρήγορη απάντηση.
  •  17-08-2009, 13:55 53086 σε απάντηση της 53085

    Απ: LINQ & Date Urgent

    Αν αυτά που έγραψε ο Johnny διορθώνουν το πρόβλημα σου τότε έχουμε δύο λάθη και λίγη τύχη να διορθώνουν ένα άλλο. Η LINQ ΔΕΝ ΕΧΕΙ κανένα πρόβλημα ούτε τα μπλέκει μόνη της. Αν όμως προσπαθήσεις να συγκρίνεις string με DateTime θα έχεις πρόβλημα σε κάθε περίπτωση, είτε μιλάμε για LINQ είτε για DataSets είτε για SQL.

    Απ' ότι φαίνεται το ContractEndDate είναι πεδίο string και όχι Date. Η Today και η Now όμως επιστρέφουν DateTime. Η σύγκριση των δύο άσχετων τιμών επιστρέφει φυσικά false.

    Η καλύτερη λύση βέβαια είναι να φροντίσεις το ContractEndDate να είναι DateTime και ΟΧΙ string. Είναι εντελώς τυχαίο το ότι η ToString επέστρεψε την ημερομηνία στην ίδια μορφή με αυτή που βρίσκεται στο ContractEndDate. Μία ημερομηνία μπορεί να αναπαρασταθεί με πολλούς διαφορετικούς τρόπους, ένας μόνο από τους οποίους επιστρέφεται ως default από την ToString. Αν το ContractEndDate περιείχε π.χ. την τιμή 20091001 ή την 2009-10-01 η σύγκριση σου πάλι θα αποτύγχανε. Φρόντισε λοιπόν να διορθώσεις την ContraceEndDate, όχι την Today.

     

    Johnny, έχω προσέξει από διάφορα posts σου ότι έχεις πρόβλημα με το LINQ και με τον τρόπο που η VB.NET χειρίζεται τα strings και τις μετατροπές. Θα σε παρακαλούσα να προσέχεις λίγο περισσότερο σε αυτά τα θέματα και να μην σπεύδεις να απαντήσεις όταν δεν καταλαβαίνεις την ερώτηση. Σε αυτή την περίπτωση από τύχη δεν δημιούργησες μεγαλύτερο πρόβλημα. Σε άλλες περιπτώσεις όμως αυτά που προτείνεις θα δημιουργήσουν μεγαλύτερο πρόβλημα σε όποιον τα εφαρμόσει.

    ekekakos, όπως κατάλαβες, αν δεν κάνεις σωστές ερωτήσεις δεν θα πάρεις σωστές απαντήσεις. Ανέφερες ότι είχες πρόβλημα, όχι όμως ΤΙ πρόβλημα είχες. Είχα μία υποψία ότι κάτι έμπλεκες με τις ημερομηνίες, αλλά δεν ήξερα αν ήταν σύγκριση string με DateTime ή σύγκρινες τιμές με ίδια ημερομηνία αλλά διαφορετική ώρα.
    Όταν κάνεις λειψές ερωτήσεις η απάντηση που θα πάρεις ή θα καθυστερήσει, ή θα είναι λανθασμένη καθώς ο καθένας θα προσπαθεί να μαντέψει τί εννοείς και τί μπορεί να συμβαίνει.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-08-2009, 01:37 53103 σε απάντηση της 53086

    Απ: LINQ & Date Urgent



    συγνωμη παιδες αλλα προβλημα εχει οποιος που δεν καταλαβαινει τι εγραψα.

    τι θα πει απο τυχη δεν δημιουργησα μεγαλητερο προβλημα? θα παρει φωτια κανεις η θα πεθανει? ελεος! σιγα τα ουα!

    οσο αφορα το συγκεκριμενο θεμα αν διαβασετε προσεκτικα ΛΕΩ οτι καλο ειναι σε LINQ να δινει μεταβλητες με περιεχόμενο (πως να το πω απλα) "ετοιμο" στο καταληλο φορματ!

    ΔΕΝ ειπα σε καμια περιπτωση να συγκρινει την ημερομ/νια ως κειμενο παντα, λαθος μεγα, απλα να δοκιμασει να δει και αν παιξει θα βγαλει τα συμπερασματα που ειπες Παναγιωτη (οτι μαλλον ειναι κακος δηλωμενο το πεδιο στη βαση),

    δεν ειναι κατι που το λεω εγω αλλα και το ιδιο το msdn μεσα σε LINQ queries μην περνας μεταβλητες που εκεινει τι στιγμη περνουν το περιεχομενο τους, δεν εννουσα αποκλειστικα στην ημερ.νια.

    ποια απλα φαντασου οτι εχεις ενα πλεγμα με στηλες και μεσα εχει κειμενο, θες να τσιμπησεις το κειμενο να το εχεις σε μια μεταβλητη και να με βαση αυτη να κανεις ενα LINQ query, ε εκει ορισμενες φορες αμα γεμιζεις την μεταβλητη την ωρα που κανεις το ερωτημα δεν παιζει! αμα το παρεις μια γραμμη απλα ποιο πριν και το εχεις στο Σωστο φορματ (οπως λες) και μετα κανεις χρήση της μεταβλητης μεσα στο linq query τοτε παιζει!

    μου εχει συμβει πολλες φορες και την λυση τοτε την ειχα βρει απο msdn.

    μην βιαζόσαστε λοιπον να κρίνεται και να κατηγορητε ανοιχτα ανθρωπους. 

    αφηστε τον κοσμο να ρωτα οπως το αντιλαμβανεται, αργα η γρηγορα θα βρεθει μια λυση, αμα βαριέστε να ασχοληθείτε μην κανετε κριτική μετα εκ του ασφαλούς!
    αμα ειναι να αρχίσουν ολοι να μιλουν με τελειες ορολογιες και αραδιαζουν copy paste msdn εδω μεσα και του κοσμου το μπλα μπλα στην θεωρεια, τρομοκρατητε ο κοσμακης και δεν ρωτα και μετα και τα μελη δεν καθοντε να ασχοληθουν να απαντησουν γιατι καποιος θα βρεθει να τους σχολειασει αρνητικά. και στην τελική ξημερώματα με το ενα ματι μισο ανοικτο απο την νύστα δικαιολογούνται ασάφειες!Big Smile

    πολυ φιλικα και με αγαπη τα λεω ολα. Smile

    peace.



    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  18-08-2009, 08:58 53104 σε απάντηση της 53103

    Απ: LINQ & Date Urgent

    Normal 0 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}

    Μερικές διευκρινίσεις,
    1. Το
    ContractEndDate είναι πεδίο τύπου Date. Όπως παραδέχθηκα και ζήτησα συγνώμη στο Linq query χρησιμοποίησα την DATE() που δεν δουλεύει και όχι την TODAY() που δουλεύει  άψογα.
    2. Το ότι πρέπει να συγκρίνω ομοειδή πράγματα νομίζω ότι είναι από τις βασικές αρχές του προγραμματισμού.
    3. Μπορεί οι γνώσεις μου στην
    Linq να είναι μικρές αλλά 9 χρόνια γράφω SQL Queries σε Oracle ΒΔ.
    4. Επειδή είμαι στο χωριό και η σύνδεσή μου με το διαδίκτυο είναι μέσω μιας
    GPRS Broadband, και η αναζήτηση είναι πολύ δύσκολη γι' αυτό ζήτησα την άμεση βοήθειά σας και ευχαριστώ τον John για την άμεση ανταπόκριση.
    5. Παιδιά νομίζω ότι το έχω ξαναγράψει: Δεν είμαστε όλοι
    EXPERTS στο .NET γι' αυτό και ζητάμε την βοήθειά σας σε "χαζα" θέματα με ίσως όχι καλές διατυπώσεις. Άμα κάτι δεν είναι κατανοητό ρωτάμε και πιστεύω ότι θα δοθούν διευκρινίσεις από τον ερωτώντα.

    Όλα τα παραπάνω είναι καλοπροαίρετες επισημάνσεις.

    Και πάλι ευχαριστώ
    ΗΛΙΑΣ

  •  19-08-2009, 12:02 53138 σε απάντηση της 53104

    Απ: LINQ & Date Urgent

    Ηλία,

    Για να τα βάλουμε σε μια σειρά και μια τάξη τα πράγματα. Καταρχήν κανένας δεν θεωρεί τον άλλο expert εδώ, τουλάχιστον όχι με την αλαζονική έννοια. Χαζό θέμα δεν υπάρχει. Απλά καλό είναι να προσέχουμε την διατύπωση όταν ετοιμάζουμε ένα ποστ και να δίνουμε όσο το δυνατό περισσότερες πληροφορίες.

    Δεν αμφισβήτησε κανείς τις γνώσεις που μπορεί να έχεις σε Oracle κλπ, ή σε αρχές προγραμματισμού. Αυτό που πρέπει να καταλάβεις είναι ότι δεν έχει σημασία εάν χρησιμοποίησες την DATE ή την TODAY αλλά το πως λειτουργούν και τι αποτελέσματα επιστρέφει η κάθε μία ώστε να κατανοήσεις γιατί το ένα λειτούργησε και το άλλο όχι (κι ότι φυσικά δεν φταίει η LINQ γι'αυτό). Επίσης, πρέπει να φύγεις λίγο απο την "λογική" της VB6. Για παράδειγμα την τιμή της TODAY είναι σωστό να την παίρνεις πλέον απο την DateTime.Today η οποία σου την επιστρέφει πάντα με τον τρόπο που πρέπει (Culture, Calendar κλπ) ή εάν θέλεις το "τώρα" με το DateTime.Now.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems