2011-04-12 13 views
5

निम्नलिखित काम करता है के रूप में उम्मीद में होने की उम्मीद int काम नहीं कर के रूप में (LINQ संस्थाओं के लिए):Nullable LINQ (सी #)

var topics = (from t in ctx.Topics where t.SubjectId == subjectId && t.ParentId == null select new { t.Title, t.Id }).ToList(); 

हालांकि, निम्नलिखित रिटर्न कुछ भी नहीं:

int? parent = null; 
var topics = (from t in ctx.Topics where t.SubjectId == subjectId && t.ParentId == parent select new { t.Title, t.Id }).ToList(); 

Topic.ParentId है एक निरर्थक int। चारों ओर काम करना आसान है, लेकिन यह मुझे पहेली करता है। क्या कोई किसी तरह की रोशनी दिखा सकता है?

+0

बचाव के लिए जॉन स्कीट! ;-) –

+0

वही प्रश्न यहां: http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework/4262617#4262617 – Slauma

उत्तर

4

आप निश्चित रूप से यह देखने के लिए पहले व्यक्ति नहीं हैं ... दिलचस्प ... व्यवहार।

http://connect.microsoft.com/data/feedback/details/607404/entity-framework-and-linq-to-sql-incorrectly-handling-nullable-variables

संक्षेप में, यह शून्य को व्यक्त करने का अलग अलग तरीकों से संभाल करने के लिए मुश्किल है।

+1

धन्यवाद। आपके उत्तर में दिए गए लिंक से, मुझे एक आसान कामकाज मिला: टी। माता-पिता। एक्वाल्स (पैरेंट)। लेकिन कितना अजीब! मुझे खुशी है कि यह सिर्फ पागल नहीं जा रहा है! – James

+0

@ जेम्स, हालांकि यह काम केवल लिंक से एसक्यूएल के लिए काम करता है और लिंक से इकाइयों तक नहीं ... क्या यह आपके लिए लिंक से इकाइयों के लिए काम करता है? –

+0

@zespri नहीं, मैंने बहुत जल्द पोस्ट किया! यह तब काम करता है जब माता-पिता शून्य होते हैं, लेकिन अन्य मामलों में नहीं। मैं अगर (पैरेंट == शून्य) के साथ समाप्त हो गया ... – James