2012-10-10 25 views
5

Próbuję zaimplementować wyszukiwanie niestandardowego elementu na liście z niestandardową nazwą kolumny przy użyciu usługi sieciowej dla JQgrid, ale nie mam pomysłów, byłbym wdzięczny za pomoc w tej sprawie .wybierz element z niestandardowej kolumny z listy

nie mogę skopiować mój kod tutaj, ale na przykład mam podmiot takiego:

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

i ja stworzyliśmy funkcję, aby powrócić do listy tej klasie:

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; 
} 

iz kwerendy otrzymuję searchField i searchString, zapisałem te wartości w łańcuchach searchField i searchString.

chcę coś działać podobnie do tej funkcji (znam jej źle, ale chcę tę funkcjonalność):

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

mam żadnego problemu z uzyskaniem listy lub cokolwiek, ale po prostu chce coś podobnego do tego .

Odpowiedz

3

Można użyć Reflection:

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

Dzięki za odpowiedź, ale ona mówi .GetValue() nie ma metody przeciążeniem który trwa 1 argumentu .. –

+0

@ OmarAs'hab: Który framework .NET używasz? –

+1

@ OmarAs'hab: jeśli używasz .NET 4.0 można użyć 'getValue (x, null)' –

3

można wdrożyć go jak poniżej.

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

To zadziała, dziękuję, ale problem polega na tym, że w klasie mam tak wiele atrybutów, z których można korzystać, i mam też wiele innych klas, więc chciałem prostą i szybką metodę. –

Powiązane problemy