2012-05-25 10 views
10

मैं सी # 4.0 के साथ पेटापोको माइक्रो-ओआरएम का उपयोग कर रहा हूं।शून्य मूल्य के लिए एक var कैसे जांचें?

कोड नीचे डेटाबेस से एक ही पंक्ति को पुन: प्राप्त:

var result = db.SingleOrDefault<TdUsers>(getUserQuery); 

मैं या नहीं, परिणाम किसी भी पंक्तियां हैं जाँच करने के लिए चाहते हैं, और चाहे रिक्त है। इसे करने का बेहतरीन तरीका क्या है?

+0

क्या आप मिल गया है का उपयोग कर सकते हैं? – sehe

उत्तर

15
if (result != null || result.Count() == 0) { 
    // Checks whether the entire result is null OR 
    // contains no resulting records. 
} 

मुझे लगता है कि समस्या null के लिए आपका चेक में नहीं है, क्योंकि LINQ आलसी लोड हो रहा है है। आपकी त्रुटि db.SingleOrDefault<TdUsers>(getUserQuery); अभिव्यक्ति का उपयोग करने में है।

.Single<T>(expression) शून्य वापस नहीं आता है - अगर परिणाम कोई मूल्य नहीं देता है तो यह त्रुटियां होती है। .SingleOrDefault<T>(expression), हालांकि, अभिव्यक्ति के परिणाम कोई मूल्य नहीं होने पर शून्य मान देता है - और इसलिए आप if (result == null) प्रकार की जांच के साथ सबसे अच्छी तरह से संयुक्त होते हैं, जैसा कि आप यहां उपयोग कर रहे हैं।

+0

प्रयास किए गए परिणाम! = शून्य, लेकिन यह "ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है" प्रदर्शित करता है। – RKh

+3

@ आरपीके - क्या आप प्रश्न में अपना कोड पोस्ट कर सकते हैं। यह काम करना चाहिए। – ChrisF

+0

मैंने अपना उत्तर –

1
var v = result.ToList(); 

अब जाँच

if (v.Count > 0) 
+0

उपरोक्त उत्तर पर मेरी टिप्पणी देखें। –

3

आप कर सकता है:

result.ToList() // Convert result to a list 

if (result.Any()) { 
    // result is not null 
} 
+0

कोई परिणाम नहीं == नल हमेशा झूठा नहीं होगा .. आपको क्या लगता है कि किसी संदर्भ प्रकार का डिफ़ॉल्ट मान है? –

+0

@ पारस्व शर्मा - सही, समायोजित। –

+0

:) ................... –

3
var result = db.SingleOrDefault<TdUsers>(getUserQuery); 

ऊपर कोड SingleOrDefault में अशक्त घाटी या निर्दिष्ट सामान्य प्रकार वापस आ जाएगी (इस पर जाना जाता है क्रम)।

Inorder चाहे लौटे मूल्यों रिक्त है की जाँच करने के लिए या नहीं तो आप बस

if(result!=null) 
{ 
//do your code stuff 
} 
else 
{ 
//stuff do be done in case where result==null 
} 
संबंधित मुद्दे