c# - Search a list through an interface -


मेरे पास एक वर्ग बुकस्टोर है जो एक इंटरफ़ेस IBookstore लागू करता है। < / P>

बुकस्टोर एक निजी संपत्ति के रूप में पुस्तकों की एक सूची है: निजी सूची & lt; पुस्तक & gt; सभी पुस्तकों;

मैं इंटरफ़ेस के माध्यम से पुस्तकों की पूरी सूची को बेनकाब नहीं करना चाहता। इसके बजाय, मैं चाहता हूं कि उपयोगकर्ता कुछ गुणों के आधार पर पुस्तकों की खोज करें। तो, IBookstore में मेरे पास निम्न है:

  सार्वजनिक इंटरफ़ेस IBookstore {IList & lt; पुस्तक & gt; SelectedBooks; } पब्लिक क्लास बुकस्टोर: आईबीकस्टोर {निजी लिस्ट & lt; पुस्तक & gt; AllBooks; सार्वजनिक IList & lt; पुस्तक & gt; चयनित पुस्तकों {प्राप्त करें; सेट; }}  

मैं क्या करना चाहता / चाहती हूं SearchBooks नामक एक विधि बना रहा है जो सूची के सभी प्रविष्टियों को सभी संपत्तियों के लिए खोज करेगा, और फिर सेट करेगा परिणाम के साथ चुने हुए पुस्तकें तो, मेरा उपयोग निम्न होगा:

<पूर्व> बुकस्टोर माइस्टोर = नया बुकस्टोर (); ... mystore.SearchBooks (एक बेंच ऑफ सीरिएरिया); myStore.SelectedBooks; / / <>

इसके बाद के संस्करण SearchBooks को पारित मानदंडों द्वारा चयनित पुस्तकों में शामिल हैं:

  • मुझे चयनित पुस्तकों तक पहुंच की आवश्यकता होगी कई बार मैं कई बार खोज को चलाने के लिए नहीं चाहता।
  • मुझे चयनित कोडों की सूची myBookstore की एक संपत्ति बनना है। यह ऑब्जेक्ट एक बार बनाया जाता है और कई स्थानों में प्रयोग किया जाता है, इसलिए मैं इसे कई जगहों पर एक ही Selected Books तक पहुंचने में सक्षम होना चाहता हूं। इसे स्थानीय संपत्ति के रूप में संग्रहीत करना वांछनीय नहीं है; यानी, मैं सूची & lt; पुस्तक & gt; MyBooks = myStore.SearchBooks (CRITERIA का एक गुच्छा); । इसके लिए मेरा बहुत अच्छा कारण है।

मेरा प्रश्न

यह देखते हुए कि पुस्तक में कई गुण हैं, जैसे शीर्षक , लेखक , दिनांक , आदि। खोज पद्धति के एक सेट को SearchBooks < कोड> ताकि मैं अपनी सूची को बुकस्टोर में निजी रूप से खोज सकता / सकती हूं

उदाहरण के लिए, अगर मेरे आवेदन में पूरी सूची तक पहुंच हो, तो मैं लिंक का इस्तेमाल कर सकता हूं क्या मैं एक विधि में एक Linq क्वेरी पास कर सकता हूं और क्या myBookstore

क्या मैं एक विधि में एक Linq क्वेरी पास कर सकता हूं और मेरी निजी जानकारी के लिए क्वेरी निष्पादित कर सकता हूं?

आप प्रतिनिधि को पास कर सकते हैं:

  सार्वजनिक शून्य खोजबुक्स (फ़नक & lt; IEnumerable & lt; पुस्तक & gt ;, IEnumerable & lt; पुस्तक & gt; & gt; क्वेरी) {चुने हुए बुककेस = क्वेरी (सभी पुस्तकों) .ToList (); }  

कॉल उदाहरण:

  myStore.SearchBooks (c = & gt; c.Where (b = & gt; b.Title == "test" & amp; ; & Amp; बी। लेखक == "लेखक"));  

या सिर्फ भविष्यवाणी का एक सेट:

  सार्वजनिक शून्य खोजबुक्स (पैरामीटर फ़ंक्शन & lt; पुस्तक, बूल & gt; [] predicates) {var क्वेरी = सभी पुस्तकों। (); Foreach (predicates में var पी) क्वेरी = query.Where (पी); चयनित पुस्तकों = query.ToList (); }  

कॉल उदाहरण:

  myStore.SearchBooks (x = & gt; x.Title == "test", x = & gt; x.uthor = = "लेखक");  

Comments