Enumerable.Empty <T> () IQueryable के बराबर


130

जब कोई विधि वापस आती है IEnumerable<T>और मेरे पास लौटने के लिए कुछ भी नहीं होता है, तो हम उपयोग कर सकते हैं Enumerable.Empty<T>()

लौटने की एक विधि के लिए क्या उपरोक्त के बराबर है IQueryable<T>

जवाबों:


206

शायद:

Enumerable.Empty<T>().AsQueryable();

2
मुझे पता है, वर्तमान में यह एकमात्र सरल, प्रत्यक्ष और गंदा ;-) समाधान है
नुमान

7
दुर्भाग्य से यह एक वास्तविक खाली IQueryable नहीं बनाता है, जिसका अर्थ है कि यह उदाहरण के लिए Unionप्रश्नों को एक के बजाय कई प्रश्नों में विभाजित किया जा सकता है।
नेटमैसेज


8

प्रयत्न return new T[0].AsQueryable();


@Nauman - आप वास्तव में एक [खाली] T सरणी बनाते हैं - वास्तव में T की कोई नई वस्तु नहीं बनाई गई है।
zastrowm 15


1

मैं alejandrobog के जवाब के खिलाफ सलाह दूंगा क्योंकि यह अभी भी खाली सरणी बनाने के लिए मेमोरी का उपयोग करेगा।

Array.Empty<T>().AsQueryable();

या

Enumerable.Empty<T>().AsQueryable();

पसंद किए जाते हैं। Array.Empty एक स्थिर टाइप की गई सरणी को आवंटित करेगा, इसलिए T का केवल एक खाली सरणी बनाया जाता है और जिसे सभी Emile क्वेरी के बीच साझा किया जाता है।


Array.Empty<T>.NET फ्रेमवर्क 4.6 के बाद ही उपलब्ध है। पुराने संस्करणों के लिए, आप उपयोग कर सकते हैंnew object[0].Cast<T>()
TZU
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.