2011-12-15 14 views
8

कोई मुझे अंतर निम्नलिखित दो LINQ बयान को खुश बता सकते हैं?LINQ - विभिन्न वाक्यविन्यास शैली, अलग परिणाम?

var ChkUnique = DB.BusinessFile.FirstOrDefault(c => c.ROCNo == txtBoxID.Text); 

और

var ChkUnique = from c in DB.BusinessFile 
       where c.ROCNo == (string)txtBoxID.Text 
       select c; 

ChkUnique != null रिटर्न false शीर्ष एक के लिए एक मैच पाया जब नहीं किया जा सकता और बाद के लिए true और मैं समझ नहीं क्यों यह हो रहा है।

मैं LINQ करने के लिए नए इसलिए मैं वास्तव में कुछ बुनियादी लेकिन इसकी मुझे पागल गाड़ी चला पल में खो सकते हैं हूँ।

+0

ध्यान दें कि आप इस तरह के पहले के बराबर दूसरे को बना सकते हैं: 'var ChkUnique = (डीबी से बिजनेसफाइल में सी। सीआरसीएनओ == (स्ट्रिंग) txtBoxID.Text का चयन करें c) .FirstOrDefault();' – phoog

उत्तर

10

दूसरा कोड है एक वस्तु है कि क्वेरी आप बुला रहे हैं का प्रतिनिधित्व करता है लौटने; यह कभी शून्य नहीं होगा। हालांकि एक बार गणना की गई, यह एक खाली संग्रह हो सकता है। (अभी भी रिक्त नहीं है, हालांकि)

आपका पहला FirstOrDefault, जो एक एकल चर में कोई एकल परिणाम मजबूर कर रहा है, अशक्त लौटने अगर वहाँ कोई परिणाम नहीं हैं बुला रहा है। आप Where बजाय किया था, तो FirstOrDefault की है, तो आप एक ही परिणाम दोनों बार होगा।

+1

गोटो! धन्यवाद :) – Permas

+1

यदि आप बाद वाले को उसी के साथ समाप्त करते हैं (सी में डीबी। बिजनेसफाइल जहां c.ROCNo == (स्ट्रिंग) txtBoxID.Text सी का चयन करें) FirstOrDefault() '। पठनीयता के बाद चुनें! – Independent

1

पहला कथन Extension Method का उपयोग कर रहा है और दूसरा एक LINQ Query Expression है।

आपकी पहली विधियों में FirstOrDefault, अनुक्रम का पहला तत्व या डिफ़ॉल्ट मान देता है यदि अनुक्रम में कोई तत्व नहीं है। यहां आप ऑब्जेक्ट्स पर काम कर रहे हैं ताकि आपकी डिफ़ॉल्ट वापसी NULL हो यदि आपके परिणाम में कोई तत्व नहीं है।

दूसरी तरफ आपका दूसरा कथन हमेशा IEnumerable<T> संग्रह प्रकार मान लौटाता है और यह कभी भी शून्य नहीं होगा। केवल आपके जांच सकते हैं कि संग्रह संग्रह के Count संपत्ति का उपयोग कर वस्तुएँ होती हैं।

यदि आप अपने पहले कथन में विस्तार विधि .Where() का उपयोग करते हैं तो यह दूसरे के बराबर होगा।

विस्तृत जानकारी और अंतर के लिए निर्दिष्ट लिंक देखें।

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