我正在尝试使用针对JQgrid的Web服务在列表中使用自定义列名搜索自定义元素,但是我的想法很多,我将不胜感激任何帮助。
我不能在这里复制我的代码,但是,例如,我有一个像:
这样的实体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;
}
从查询字符串中我得到了searchField和searchString,我将这些值存储在字符串searchField和searchString中。
我想要一些类似于这个功能的东西(我知道它错了,但我想要这个功能):
list=testList.Where(x=>x.searchField.Contains(searchString));
获取列表或其他任何内容都没有问题,但我只想要类似的内容。
答案 0 :(得分:3)
您可以使用Reflection
:
list = testList.Where(x => (x.GetType()
.GetProperty(searchField)
.GetValue(x) as string).Contains(searchString)
);
答案 1 :(得分: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);
}