Я пытаюсь создать функцию поиска для списка. Это довольно просто, однако я пытаюсь использовать метод, который может принимать списки разных типов. Возьмите следующий пример, чтобы уяснить вопрос:Использовать общий метод со списком другого типа/класса
Методы SearchGridViewCategorie и SearchGridViewMedewerker - это методы поиска в Списке, если он содержит поисковый запрос.
public static void SearchGridViewMedewerker(ref List<Medewerker> medewerkers, String term) {
medewerkers = medewerkers.Where(m => m.gebruikersnaam.ToLower().Contains(term.ToLower()) ||
m.naam.ToLower().Contains(term.ToLower()) ||
m.email.ToLower().Contains(term.ToLower()) ||
m.rol.ToLower().Contains(term.ToLower())).ToList();
}
public static void SearchGridViewCategorie(ref List<Categorie> categorieen, String term) {
categorieen = categorieen.Where(c => c.omschrijving.ToLower().Contains(term.ToLower())).ToList();
}
Я пытаюсь сделать этот метод поиска общего, так что я могу передать списки различных типов с тем же способом. Я попытался следующие:
public static List<object> SearchGridView(List<object> list, String term) {
IList<PropertyInfo> properties = list.GetType().GetProperties().ToList();
List<object> tempList = new List<object>();
foreach(object o in list){
foreach (var property in properties) {
if (property.ToString().Contains(term.ToLower())) {
tempList.Add(o);
}
}
}
return tempList;
}
Однако с этим решением я должен преобразовать список типа T в список объектов до передачи списка в методе.
Это не то, что я хочу. Я хочу передать список любого типа, обработать его и вернуть список типа, заданного в качестве параметра. Это возможно?
Вы понимаете, что 'property.ToString()' просто возвращает «System.Reflection.PropertyInfo» каждый раз, да? – samjudson
Использование 'List
@samjudson Ах, да, я плохой, но вы поняли, что я пытаюсь выполнить. – Sliver2009