tug*_*erk 8 c# linq asp.net asp.net-mvc entity-framework
假设我有以下课程:
public class Person {
public string FirstName { get; set; }
public string SurName { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
此外,我有以下方法,我通过存储库与人员数据联系.
public IEnumerable<Person> getPeople(string searchField, string searchTerm) {
//_repo.GetAll() returns IEnumerable<Person>
var model = _repo.GetAll();
//Need the logic here for filtering
return model;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我为该方法获得了两个参数:searchField和searchTerm.
searchField用于字段名称,其值将用于过滤.searchTerm是用来与重复值进行比较的值(对不起,如果我在这里不清楚,但这是我能提出的最多)
我通常会做的如下:
public IEnumerable<Person> getPeople(string searchField, string searchTerm) {
//_repo.GetAll() returns IEnumerable<Person>
var model = _repo.GetAll();
switch(searchField) {
case "FirstName":
model = model.Where(x => x.FirstName == searchTerm);
break;
case "SurName":
model = model.Where(x => x.SurName == searchTerm);
break;
//Keeps going
}
return model;
}
Run Code Online (Sandbox Code Playgroud)
哪个会好起来的.但是如果我对我的类进行了更改,那么如果我在这个类中添加新属性,那么这段代码将会发生变化或者缺少某些函数.
我正在寻找的是如下所示:
注意 :
下面的代码完全属于我的想象,并没有这样的东西存在.
model = model.Where(x => x.GetPropertyByName(searchField) == searchTerm);
Run Code Online (Sandbox Code Playgroud)
我是否在这里飞得太高如果不可能或完全白痴,如果已经有内置的方式吗?