क्या VB.NET की Aggregate
क्वेरी 0xखंडों के साथ एक लिंक अभिव्यक्ति के पहले (बाहरी) खंड के रूप में उपयोग की जाने वाली क्वेरी को मोटे तौर पर त्रुटिपूर्ण कर दिया गया है क्योंकि प्रत्येक Into
खंड अलग से निष्पादित किया जाता है?कुल मिलाकर मोटे तौर पर त्रुटिपूर्ण है क्योंकि खंड में प्रत्येक को अलग से निष्पादित किया जाता है?
SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant
in LINQ to SQL को "स्पष्ट" जवाब
Dim limits = Aggregate p In Plants Select p.ZoneMin Into Min(), Max()
हालांकि है, इस सवाल का जवाब वास्तव में Min
और Max
में से प्रत्येक को पुन: प्राप्त (और यदि आप Count
और Average
जैसे अन्य कुल कार्यों में शामिल हैं) अलग एसक्यूएल प्रश्नों में । इसे LINQPad में आसानी से देखा जा सकता है।
क्या कोई लेनदेन (या इन प्रश्नों को परमाणु बनाने वाला कुछ और है) LINQPad द्वारा नहीं दिखाया गया है, या यह एक दौड़ की स्थिति होने का इंतजार कर रहा है? (और इसलिए आपको उपरोक्त प्रश्न के उत्तर में दिखाए गए ट्रिक्स को एक से अधिक क्वेरी को मजबूर करने के लिए किया गया है।)
संक्षेप में, क्या Aggregate
का उपयोग कर LINQ-to-SQL क्वेरी है जो एकाधिक समेकित करता है एक एकल (या कम से कम "परमाणु") क्वेरी में कार्य करता है?
(मैं यह भी कहना है "स्पष्ट" क्योंकि मेरे लिए स्पष्ट जवाब, Aggregate p In Plants Into Min(p.ZoneMin), Max(p.ZoneMin)
, वास्तव में पूरी तालिका में दो बार प्राप्त करता है, यहाँ तक कि जब अनुकूलित किया है, और उसके बाद का उपयोग करता Linq करने वाली संस्थाओं Min
और Max
परिणाम प्राप्त करने के लिए: -()
मैंने सोचा था कि Aggregate
वीबी विशेष नहीं था, लेकिन सी # की तरह इस क्वेरी अभिव्यक्ति नहीं है यह लग रहा है, तो मैं vb.net करने के लिए .net बदल दिया है
आप यह सत्यापित करने में सक्षम हो सकते हैं कि SQL सर्वर स्वयं का पता लगाकर प्रश्न लेनदेन में हैं या नहीं, इसे दिखाना चाहिए (लेकिन मुझे इसके बारे में 100% निश्चित नहीं है)। यदि प्रदर्शन एक प्रमुख चिंता नहीं है, हालांकि, आप पूरे डेटासेट को पढ़ने और बाद में एकत्र करने से बेहतर हैं (मूल रूप से, डेटा के स्नैपशॉट पर काम कर रहे हैं)। – Alex
ध्यान दें कि मुझे उम्मीद है कि मेरी मूल 'इन्टो मिन (पी। ज़ोनमिन)' क्वेरी ऑप्टिमाइज़ हो जाएगी, क्योंकि क्वेरी के एसक्यूएल भाग अब समान हैं। शायद जिटर अभी भी इसे देख पाएगा, लेकिन LINQPad/o + नहीं था। –
और जब आप केवल उन कार्यों के साथ एकत्रित होते हैं जो एसक्यूएल का समर्थन करता है तो डेटाबेस को एकत्रीकरण करने के लिए "निरंतर चाल से समूह करना" करना बेहतर होगा। –