2012-07-15 7 views
7

मैंने एक समान क्वेरी के कई जवाब पढ़े हैं, लेकिन कोई भी स्थान पर नहीं पहुंचता है।किसी तालिका से 3 यादृच्छिक रिकॉर्ड प्राप्त करना

कल्पना कीजिए कि मेरे पास एक पंक्ति है जिसमें 10 पंक्तियां हैं, मैं एंटिटी फ्रेमवर्क का उपयोग करके इस तालिका से 3 यादृच्छिक पंक्तियों को कैसे प्राप्त करूं? सिर्फ 1 यादृच्छिक पंक्ति नहीं, बल्कि 3 यादृच्छिक पंक्तियां - प्रत्येक दूसरे से भिन्न होती है?

अग्रिम

उत्तर

18
var threeRandomFoos = foos.OrderBy(x => Guid.NewGuid()).Take(3); 
+0

अब यह सादगी कमाल है! चीयर्स डारिन! – Sniffer

8

इसके बजाय, वहाँ एक आसान तरीका है धन्यवाद,

var threeRandomFoos = foos.OrderBy(x=> SqlFunctions.Rand()).Take(3); 

Guid.NewGuid थोड़ा प्रदर्शन में धीमी, क्यों नहीं का उपयोग करें रैंडम SqlFunctions अपने आप में निर्दिष्ट किया जाएगा?

+0

ऐसा लगता है कि 'रैंड' का मूल्यांकन केवल एक बार किया जाता है और इसलिए उपयोगी नहीं होता है: मेरे पास एक एसक्यूएल क्वेरी है जो 'SELECT TOP (3) - कुछ कॉलम ... से चुनें (चुनें \t रैंड() AS [ सी 1], \t -। कुछ स्तंभ ... [dbo] से \t [MyTable] के रूप में [Extent1] ) के रूप में [Project1] BY [Project1] [सी 1] ASC' आदेश।। मैं एसक्यूएल-सर्वर 2008 आर 2 का उपयोग कर रहा हूं। –

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

  • कोई संबंधित समस्या नहीं^_^