मैं LINQ से ऑब्जेक्ट्स का उपयोग कर रहा हूं और आश्चर्यचकित हूं कि मेरे पास एक इंडेक्स का उपयोग करके मेरे प्रश्नों के प्रदर्शन में सुधार करना संभव है। यह एक उदाहरण के साथ सबसे अच्छी तरह से समझाया गया है। एक सरल प्रकार ...ऑब्जेक्ट्स के साथ LINQ ऑब्जेक्ट्स और बेहतर पेर्फ?
public class Person
{
public int Age;
public string FirstName;
public string LastName;
}
और एक सरल प्रश्न मैं इसके खिलाफ होगा ...
List<Person> people = new List<Person>();
// 'people' populated with 50,000 instances...
var x = from t in people
where t.Age > 18 && t.Age < 21
select t;
कल्पना कीजिए अगर मैं सही ढंग तब से कहाँ विस्तार विधि करके बताना होगा कार्यान्वयन वस्तुओं के लिए LINQ को समझने वास्तव में मिलान करने वाले 100 को खोजने के लिए लोगों के संग्रह में सभी 50,000 उदाहरण। जैसा कि होता है मेरे पास पहले से ही लोगों के संग्रह की एक अनुक्रमणिका है जो आयु द्वारा क्रमबद्ध है। इस तरह ...
SortedList<int, Person> ageSorted = new SortedList<int, Person>();
जाहिर है यह समझ बनाने होगा अगर मैं कहाँ SortedList उपयोग करने के लिए मिल सकता है तो यह अब सभी 50,000 उदाहरणों की गणना करने में, बजाय 100 मिलान प्रविष्टियों की सीमा खोजने और इसलिए बचत है पहर।
यह मेरी स्थिति को सक्षम करने के वस्तुओं के लिए LINQ विस्तार करने के लिए संभव है? क्या यह पहले से ही संभव है लेकिन मुझे तकनीक याद आ रही है? i4o -
धन्यवाद। वह निश्चित रूप से वह काम करेगा जो मुझे प्राप्त करने की उम्मीद थी। –
@ फिलहाइट, @ जॉन स्केट एक 'List.BinarySearch' विधि है जिसका उपयोग उपरोक्त कोड में किया जा सकता है, विधि हस्ताक्षर के मामूली संशोधन के साथ। बीटीडब्लू, क्रमबद्ध सूची में एक बाइनरी खोज भी है: 'SortedList.IndexOfKey'। –
बीटीडब्लू, 'सूची। बाइनरी सर्च' का उपयोग सटीक मिलान मौजूद नहीं होने पर निकटतम मैच खोजने के लिए किया जा सकता है। उत्सुकता से, 'SortedList.IndexOfKey' में यह क्षमता प्रतीत नहीं होती है। –