2017-10-03 16 views
5

मुझे कार्यक्षमता बनाने की आवश्यकता है जो उपयोगकर्ताओं को शाब्दिक प्रश्नों (यानी age gt 20 and name eq 'john') का उपयोग करके इकाइयों को फ़िल्टर करने की अनुमति देगा। क्या सी #/एएसपी.नेट एमवीसी में ऐसा करने के लिए एक प्रदान की गई कार्यक्षमता है या क्या मुझे अपने आप से इस क्वेरी को पार्स करना है?सी # में प्रश्नों का उपयोग करके इकाइयों को फ़िल्टर कैसे करें?

मैंने पाया कि ओडाटा का मतलब है कि वास्तव में ऐसी कार्यक्षमता (OData Filter Expressions MSDN) है। हालांकि, मैं इससे परिचित नहीं हूं इसलिए मुझे नहीं पता कि मेरी परियोजना में इस तरह के व्यवहार को कैसे कार्यान्वित किया जाए।

var list = new List<Person> 
{ 
    new Person { Name = "John", Age = 30 }, 
    new Person { Name = "Hanna", Age = 25 }, 
    new Person { Name = "John", Age = 15 } 
}; 

string query = "age gt 20 and name eq /'John/'"; 
IEnumerable<Person> result = list.FilterByExpression(query); 
// returns list with John aged 30 

किसी भी सलाह की सराहना की जाएगी:

मैं कुछ इस तरह की जरूरत है।

उत्तर

2

Linq2Rest नामक नुजेट पर एक पैकेज है, जिसमें IEnumerable के लिए एक विस्तार विधि है जिसे Filter कहा जाता है। आप फ़िल्टर को बनाने के लिए आवश्यक फ़िल्टर की स्ट्रिंग पास कर सकते हैं। आंतरिक रूप से, इसे Expression Tree में परिवर्तित कर दिया जाएगा और इसका उपयोग Ienumerable एक्सटेंशन विधियों के साथ किया जाएगा।

नमूना के लिए:

var filteredSource = source.Filter(Request.Params); 

कैसे इस प्रकार की समस्या इस समस्या का समाधान पुस्तकालयों JSON.Net और Linq2Rest का उपयोग कर के साथ सौदा करने के बारे में इस लेख Creating a .Net queryable client for ASP.Net Web API oData services देखें।

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

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