2010-04-23 9 views
12

यदि मेरे पास कोई प्रश्न है जो DateTime देता है, तो FirstOrDefault() का मूल्य क्या है? क्या डिफ़ॉल्ट सी # स्केलर का मान प्राप्त करने का कोई सामान्य तरीका है? उदाहरण:लिंक में डेटटाइम के लिए FirstOrDefault क्या है?

var list = (from item in db.Items 
    where item.ID==1234 
    select item.StartDate).FirstOrDefault(); 

संपादित करें: मान लें कि स्तंभ StartDate खाली नहीं रह सकती।

उत्तर

35

किसी दिए गए सामान्य प्रकार के लिए एक डिफ़ॉल्ट मान प्राप्त करने के लिए सामान्य तरीका है:

default(T) 

जहां T प्रश्न में सामान्य प्रकार पैरामीटर है। संदर्भ प्रकारों के लिए, यह null उत्पन्न करेगा। मूल्य प्रकारों के लिए, यह मान का शून्य उदाहरण देगा। DateTime एस के लिए, यह DateTime.MinValue के बराबर होगा।

+6

एक sidenote के रूप, आप कर सकते हैं हमेशा "शक्ति" एक अलग डिफ़ॉल्ट का उपयोग कर:। 'Collection.DefaultIfEmpty (नई दिनांक समय (...)) पहले();' –

2

इम अनुमान लगा अपनी default(DateTime) जो अनुमान लगा im (फिर) DateTime.MinValue

3

default(DateTime) 1/1/0001 12:00:00 AM है है।

अपने कोड में, आपकी क्वेरी का प्रमुख हिस्सा आपके डेटाबेस से प्रारंभ तिथियों का एक अनुमानित है। FirstOrDefault() पर आपका कॉल या तो संख्यात्मक या उसके प्रकार के डिफ़ॉल्ट मान का पहला तत्व लौटा रहा है यदि संख्या में कोई तत्व नहीं है।

यदि स्टार्टडेट वास्तव में एक तिथि है और संख्या में कोई तत्व नहीं है, तो परिणाम ऊपर दिए गए डेटाटाइम मान होगा।

1

1-1-0001 की शुरुआत में मध्यरात्रि है।

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