2011-03-07 14 views
7

मेरा डेटाबेस फ़ील्ड int_ParentId एक शून्य मान शामिल है। मैं इस linq क्वेरी में एक शून्य के लिए कैसे जांचूँगा। यह काम नहीं कर रहाlinq से sql जांच के लिए शून्य

return _db.Categories.Where(m => m.int_ParentId==null); 

उत्तर

25

क्या आप int? प्रकार (उदा <Column Name="int_ParentId" Type="System.Int32" DbType="Int" CanBeNull="true" />) को int_ParentId डाटाबेस क्षेत्र मैप किया गया है? यदि हाँ, दोनों:

return _db.Categories.Where(m => m.int_ParentId == null); 

और

return _db.Categories.Where(m => m.int_ParentId.HasValue); 

काम करना चाहिए।

+1

सही - बिल्कुल जो मैं खोज रहा था –

1

मुझे लगता है कि आप वस्तु की Equals विधि का उपयोग करना चाहते हैं:

return _db.Categories.Where(m => m.int_ParentId.Equals(null)); 
5

यह प्रश्न वास्तव में आपके द्वारा प्रदान किए गए संदर्भ की कमी के कारण आसानी से उत्तर नहीं दिया जाता है, हालांकि आमतौर पर _db.Categories.Where(m => m.int_ParentId.Equals(null)); जो आप चाहते हैं वह करता है।

सीटीएस (.NETs प्रकार सिस्टम) और SQL प्रकार प्रणाली के बीच कुछ विसंगतियां हैं।

पूर्ण संदर्भ के लिए SQL-CLR Type Mismatches - MSDN और Null Semantics - MSDN देखें।

यदि आप पर्याप्त देखभाल नहीं करते हैं तो विशेष रूप से शून्य आपको सिरदर्द का कारण बनती है, क्योंकि इसमें संबंधित प्रकार के सिस्टम में दो अलग-अलग अर्थ हैं। एसक्यूएल में NULL का अर्थ है, "अनुपस्थित मान, किसी भी तुलना से मेल खाएगा", जबकि null .NET में "कोई ऑब्जेक्ट नहीं है, शून्य के विरुद्ध तुलना हमेशा झूठी होगी"।

0

मैं इस क्वेरी इस परिदृश्य

YourContext db = new YourContext(); 
List<entity> list = (from n in db.YourEntity 
        where n.FieldToCheck.Equals(null) 
        select n).ToList(); 

आशा है कि यह मदद करता है में काम कर रहे है।