2009-10-07 13 views
13

में फर्स्टऑर्डडिल्ट व्यवहार सीधे ऐसा लगता है कि मैंने सिंटैक्स में कुछ आसान याद किया होगा, लेकिन मैं पहले एक अस्थायी चर में IENumerable को स्टोर किए बिना सीधे linq कथन से FirstOrDefault के परिणाम प्राप्त करना चाहता हूं। कुछ इस तरह:LINQ कथन

var bestCar = from c in cars 
       orderby c.Price 
       select first c 

मैं जानता हूँ कि पहले कीवर्ड का वास्तव में मौजूद नहीं है, लेकिन दिखाता है मुझे क्या करना चाहते हैं। मुझे यह भी पता है कि मैं इसे से लपेट सकता हूं ... कोष्ठक में चयन कथन और FirstOrDefault पर सीधे कॉल करें लेकिन मुझे लगता है कि उपरोक्त वाक्यविन्यास क्लीनर और पढ़ने में आसान है।

+0

आपका प्रश्न वास्तव में क्या है? –

उत्तर

23

Enumerable.FirstOrDefault Enumerable कक्षा में विस्तार तरीकों जो एक इसी LINQ वाक्य रचना तत्व नहीं है में से एक है। विधि विधि सिंटैक्स के माध्यम से इस विधि से जुड़ने का एकमात्र तरीका है।

आप follownig

var bestCar = (from c in cars 
       orderby c.Price 
       select c).FirstOrDefault(); 
+0

हालांकि यह 'फर्स्टऑर्डडिफॉल्ट()' का उदाहरण है, ऐसा लगता है कि ऐसा समझा जा सकता है कि इस तरह के एक गणना करने योग्य पहले से ही आदेश दिया गया है, क्योंकि क्रमशः 'MaxBy (c => c.Price)' के रूप में असामान्य रूप से कम है। –

3

    var bestCar = (from c in cars 
       orderby c.Price 
       select c).FirstOrDefault(); 

क्षमा करें मैंने आपका प्रश्न पूरी तरह से नहीं पढ़ा, ऐसा लगता है कि यह वही हो सकता है जो आप नहीं करना चाहते हैं।

4
var bestCar = (from c in cars 
      orderby c.Price 
      select c).FirstOrDefault() 

या

var bestCar = cars.OrderBy(c => c.Price).FirstOrDefault() 
7

है कि इसके लिए कोई तरीका नहीं है ऐसा करने से अस्थायी बच सकते हैं। LINQ का प्रयोग एक क्वेरी को परिभाषित करने के लिए किया जाता है। ऐसा करने से वास्तव में मूल्यांकन नहीं होता है, जबकि FirstOrDefault निष्पादित करता है (या इसके बारे में गणना) क्वेरी निष्पादित करता है।