मैं उपयोगकर्ता को IANA - Protocol Registry से प्रोटोकॉल चुनना आसान बनाने के लिए एक सेवा बनाने की प्रक्रिया में हूं।एक लिनक/लैम्ब्डा अभिव्यक्ति के साथ परिणाम को कुशलतापूर्वक सीमित करने के लिए कैसे करें?
जैसा कि आप कल्पना कर सकते हैं कि http
शब्द के लिए रजिस्ट्री को खोजना बहुत सारी हिट खींचता है। चूंकि amt-soap-http
उपयोगकर्ता द्वारा सीधे http
की तुलना में बहुत कम बार-बार चुना जा रहा है, मैंने फैसला किया कि http
से शुरू होने वाली सभी चीज़ों को खींचना एक अच्छा विचार होगा और फिर शेष परिणामों के साथ इसे संयोजित करें।
var records = this._ianaRegistryService.GetAllLike(term).ToList();
var results = records.Where(r => r.Name.StartsWith(term))
.OrderBy(r => r.Name)
.Concat(records.Where(r => !r.Name.StartsWith(term))
.OrderBy(r => r.Name))
.Take(MaxResultSize);
दुर्भाग्य से, मुझे लगता है कि मैं आवश्यकता से अपने परिणाम के माध्यम से अधिक बार पुनरावृत्ति कर रहा हूँ:
नीचे लैम्ब्डा अभिव्यक्ति है कि विचार प्रक्रिया का परिणाम है। समय से पहले अनुकूलन विचारों को लैम्ब्डा अभिव्यक्तियों का एक संयोजन है जो ऊपर की तुलना में अधिक कुशल होगा?
जो लोग 'Orderby' और के बीच अंतर पता नहीं है (@Bobson और upvoter) के लिए,' GroupBy + SelectMany': एक 'है n * लॉग (एन)' ऑपरेशन और अन्य 'n ' – I4V
@ I4V उस ज्ञान का उपयोग करना [उत्तर डी स्टेनली प्रदान किया गया] (http://stackoverflow.com/a/14884435/61654) से अधिक कुशल उत्तर है? – ahsteele
ahsteele, मैंने एक दिया था, लेकिन मैंने इसे 3 डाउनवॉट्स के बाद हटा दिया (क्योंकि मैंने लिखा * मैंने अभी तक इसका परीक्षण नहीं किया है *) – I4V