2012-10-10 40 views
5

मैं JQgrid के लिए webservice का उपयोग कर कस्टम कॉलम नाम के साथ एक कस्टम तत्व के लिए खोज को कार्यान्वित करने का प्रयास कर रहा हूं, लेकिन मैं विचारों से बाहर हूं कि मैं इस पर किसी भी मदद की सराहना करता हूं ।किसी सूची से कस्टम कॉलम से एक तत्व का चयन करें

मैं यहां अपने कोड को कॉपी नहीं कर सकता लेकिन, उदाहरण के लिए, मैं की तरह एक इकाई है:

public class Test 
{ 
    public int ID {get; set;} 
    public string Name {get; set;} 
    public string Nationality {get; set;} 
} 

और मैं एक समारोह बनाई गई इस वर्ग की एक सूची वापस करने के लिए:

public static List <Test> getList() 
{ 
    List<Test> testList = new List<Test>(); 
    Test testList1 = new Test(); 

    testList1.ID = 123; 
    testList1.Name = "asd"; 
    testList1.Nationality = "qwe"; 

    testList.Add(testList1); 
    return testList; 
} 

और क्वेरीस्ट्रिंग से मुझे सर्चफिल्ड और सर्चस्ट्रिंग मिलती है, मैंने इन मानों को तारों की खोज फ़ील्ड और सर्चस्ट्रिंग में संग्रहीत किया है।

list=testList.Where(x=>x.searchField.Contains(searchString)); 

मैं सूची या कुछ भी हो रही है के साथ कोई समस्या नहीं है, लेकिन मैं सिर्फ इस के लिए कुछ इसी तरह हैं:

मैं इस समारोह के लिए इसी तरह काम करने के लिए कुछ (मैं अपने गलत जानते हैं, लेकिन मुझे लगता है कि कार्यक्षमता चाहते हैं) चाहते हैं ।

उत्तर

3

आप Reflection उपयोग कर सकते हैं:

list = testList.Where(x => (x.GetType() 
       .GetProperty(searchField) 
       .GetValue(x) as string).Contains(searchString)  
    ); 
+0

अपने उत्तर के लिए धन्यवाद, लेकिन यह कहते .GetValue() एक अधिभार विधि है कि लेता है 1 तर्क .. –

+0

@ OmarAs'hab नहीं है: जो .NET फ़्रेमवर्क प्रयोग कर रहे हैं? –

+1

@ ओमारएसबैब: यदि आप .NET 4.0 का उपयोग करते हैं तो आप 'GetValue (x, null) ' –

3

आप इसे निम्नलिखित की तरह लागू कर सकते हैं।

if(searchField == "ID") 
{ 
    testList = testList.Where(x => x.ID == searchString); 
} 
else if (searchField == "Name") 
{ 
    testList = testList.Where(x => x.Name.Contains(searchString); 
} 
else if (searchField == "Nationality") 
{ 
    testList = testList.Where(x => x.Nationality.Contains(searchString); 
} 
+0

यह आपको धन्यवाद देगा, लेकिन समस्या यह है कि कक्षा में मेरे पास उपयोग करने के लिए बहुत सारे गुण हैं, और मेरे पास कई अन्य वर्ग भी हैं, इसलिए मैं एक सरल और त्वरित विधि चाहता था। –