कोई मिलान नहीं होने पर LINQ फ़ंक्शन वास्तव में क्या करता है? कहां विधि ले लो, उदाहरण के लिए:LINQ परिणाम जब कोई मिलान नहीं है?
var numbers = Enumerable.Range(1, 10);
var results = numbers.Where(n => n == 50);
इस बिंदु पर परिणाम क्या होंगे?
कोई मिलान नहीं होने पर LINQ फ़ंक्शन वास्तव में क्या करता है? कहां विधि ले लो, उदाहरण के लिए:LINQ परिणाम जब कोई मिलान नहीं है?
var numbers = Enumerable.Range(1, 10);
var results = numbers.Where(n => n == 50);
इस बिंदु पर परिणाम क्या होंगे?
results
स्वयं ही एक प्रश्न है। जब तक आप इसके माध्यम से पुनरावृत्ति शुरू नहीं करते हैं (या तो स्पष्ट रूप से या Count()
जैसे कॉल के माध्यम से), कुछ भी जांच नहीं किया गया है कि कोई परिणाम हैं या नहीं। यह केवल तभी होता है जब आप इसका अनुमान लगाते हैं कि कुछ भी होगा।
तो तुम कर सकता है:
foreach (int x in results)
{
Console.WriteLine("This won't happen");
}
या:
Console.WriteLine(results.Any()); // Will print false
Console.WriteLine(results.Count()); // Will print 0
इनमें से किसी कारण होगा विधेय रेंज में प्रत्येक मद के सामने मूल्यांकन किया जाना ... लेकिन तब से पहले, यह जीता बिलकुल नहीं बुलाया जाएगा।
यह समझने के लिए एक महत्वपूर्ण बात है, क्योंकि यह मतलब है कि results
null
नहीं सकता है आलसी मूल्यांकन की सुविधा को बनाए रखते हुए है - जब तक आप उपयोग करने की कोशिश कीresults
, यह है कि क्या यह बाहर काम नहीं होता null
होना चाहिए या नहीं!
खाली IEnumerable<T>
का संदर्भ।
बढ़िया! यही वह है जिसे मैं ढूंढ रहा था। मैं यह सुनिश्चित करना चाहता था कि मुझे शून्य की जांच करने की आवश्यकता नहीं है। – jasonh
नाइटपिक: एक खाली IENumerable
हाँ आप सुरक्षित हैं, यह शक्कर की भलाई है! –
इस मामले में यह 0 आइटमों की संख्या के साथ IEnumerable<Int32>
देता है।
यह इसे "जानता है" की तरह बनाता है 0 की गिनती है - जो यह नहीं करता है। लौटाया गया मूल्य एक 'आईनेमरेबल
@ जोन: निश्चित रूप से, स्पष्टीकरण के लिए धन्यवाद। जैसा कि आपने अपनी पोस्ट में उल्लेख किया है, इसका उपयोग परिणाम निर्धारित करने के लिए किया जाना चाहिए। –
"परिणाम" में क्या होगा * एक ऑब्जेक्ट जो क्वेरी * का प्रतिनिधित्व करता है। याद रखें: क्वेरी ऑब्जेक्ट क्वेरी का परिणाम नहीं है। क्वेरी ऑब्जेक्ट ऐसा कुछ है जिसे आप * क्वेरी के परिणाम प्राप्त करने के लिए पुन: प्रयास कर सकते हैं *, यह स्वयं नतीजे नहीं है। –