2008-10-04 16 views
11

जब मैं LINQ का उपयोग करके एक रिकॉर्ड पुनर्प्राप्त करता हूं जिसमें डेटटाइम फ़ील्ड केवल ToString() उपलब्ध है।डेटटाइम, डेटटाइम? और LINQ

अन्य सभी दिनांक समय विधियां कहां हैं?

मुझे कनवर्ट करना होगा। डेटटाइम दिनांक दिनांक? कि फील्ड लौटता है?

क्या (DATETIME) और (DATETIME?)

उत्तर

16

DateTime? द्वारा आप एक Nullable<DateTime> मतलब है, तो आप DateTime मूल्य DateTime?.Value संपत्ति के माध्यम से प्राप्त कर सकते हैं।

+0

... या डेटटाइम कास्टिंग करके? डेटटाइम में किसी भी मामले में, आपको यह जांचना चाहिए कि यह पहले शून्य है या आपको अपवाद मिलेगा। – Lucas

+0

धन्यवाद! मुझे पता है कि यह लगभग एक साल पहले था, लेकिन आपके जवाब ने मुझे एक नया प्रश्न पोस्ट करने से रोक दिया। –

0

नाम स्थान टक्कर एक तरफ के बीच अंतर है, मुझे पता है एसक्यूएल के दिनांक सी # datetime तुलना में एक अलग युग (और इसलिए वैध तिथियों की एक अलग श्रेणी) है।

संग्रहीत प्रक्रिया में new DateTime() भेजने का प्रयास करें और देखें कि मेरा क्या मतलब है।

9

एसक्यूएल में, डेटटाइम्स को शून्य होने की अनुमति है। सी # डेटटाइम में शून्य नहीं हो सकता है। आप nullable value types के बारे में थोड़ा सा पढ़ सकते हैं। चूंकि मान टाइप किए गए चर शून्य नहीं हो सकते हैं, इसलिए इस स्थिति को संभालने के लिए एक सामान्य वर्ग बनाया गया था। इसे Nullable < कहा जाता है> और यह आमतौर पर प्रकार के बाद एक प्रश्न चिह्न के साथ लिखा जाता है।

इन मानों का उपयोग करने के लिए आप .HasValue प्रॉपर्टी को देखना चाहेंगे। यह एक बूलियन है जो जानता है कि वस्तु में कोई मूल्य है या यह शून्य है। एक बार जब आप इसे चेक कर लेंगे। हैसवेल्यू प्रॉपर्टी सही है, तो आप सुरक्षित रूप से। वैल्यू प्रॉपर्टी का उपयोग कर सकते हैं। । वैल्यू संपत्ति डेटटाइम प्रकार का होगा।

+0

हैस्वालू मेरे लिए LINQ क्वेरी में संभवतः पूर्ण पूर्णांक मानों की जांच के साथ काम करने में काफी मददगार था: सी। फ़ील्ड (इंटीजर?) ("सेकेंडरीआईडी")। HasValue – atconway

2

एसक्यूएल में, आपके पास डेटटाइम फ़ील्ड सेट नल को अनुमति देने के लिए सेट है। फिर LINQ में, जब आप फ़ील्ड तक पहुंचने जा रहे हैं, तो .NET को पता नहीं है कि फ़ील्ड वास्तव में एक तारीख है या नहीं, यही कारण है कि आपको कनवर्ट करना होगा। ToDateTime() किसी भी दिनांक विधि आपके लिए उपलब्ध होने से पहले।

यदि फ़ील्ड में हमेशा एक तिथि होगी, तो डेटाबेस कॉलम को न्यूल पर सेट करें और आपको ठीक होना चाहिए।

संबंधित मुद्दे