2012-10-10 31 views
5

JQgrid için bir web hizmeti kullanarak özel bir sütun adıyla bir listede özel bir öğe için arama yapmaya çalışıyorum, ancak bu konuda herhangi bir yardım için minnettarım. .Bir listeden özel bir sütundan bir öğe seçin

Ben mesela, ben gibi bir varlık var, burada benim kodu kopyalayıp ama olamaz

:

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

ve bu sınıfın bir listesini döndürmek için bir işlevi yarattı:

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

ve querystring gelen searchField ve searchString olsun, bu değerleri dizeleri searchField ve searchString içine kaydettim.

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

O listeyi ya da bir şey elde ile bir sorunum yok ama sadece buna benzer bir şey istiyorum:

bir şey (Bunun yanlış olduğunu biliyorum ama bu işlevselliği istiyorum) bu işlevine benzer çalışmak istiyoruz .

cevap

3

Sen Reflection kullanabilirsiniz:

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

Cevabınız için teşekkürler, ancak .GetValue() OmarAs'hab @ 1 argüman .. –

+0

Alır aşırı yük yöntemi olmadığını söylüyor: .NET framework kullanıyorsunuz? –

+1

@ OmarAs'hab: .Net 4.0 kullanırsanız, GetValue (x, null) ' –

3

Sen aşağıdaki gibi bunu uygulayabilirsiniz.

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

Bu işe yarardı, ama sorun şu ki sınıfta kullanılabilecek çok fazla özniteliğim var ve diğer birçok sınıfım da var, bu yüzden basit ve hızlı bir yöntem istedim. –

İlgili konular