Как отфильтровать элементы общего словаря, используя разные поля объекта?
Мне нужно реализовать класс репозитория, который позволяет пользователю выполнять поиск по различным полям объекта. Получив данные из другого сервиса, я сохраняю результат в Dictionary
объект, теперь я хочу, чтобы иметь возможность фильтровать результат на основе различных свойств объекта. Например:
People {
public string FirstName {get; set;}
public string LastName {get; set;}
}
Dictionary<int, People> rawData;
public List<People> GetByFirstName(string firstName) {
if(string.IsNullOrEmpty(firstName)) {
return new List<People>();
}
return rawData.Where(p => p.FirstName == firstName).ToList(i => i.Value);
}
public List<People> GetByLastName(string lastName) {
if(string.IsNullOrEmpty(lastName)) {
return new List<People>();
}
return rawData.Where(p => p.LastName == lastName).ToList(i => i.Key, i => i.Value);
}
Теперь я хочу реализовать шаблон прототипа, используя вспомогательную функцию:
public List<People> SearchHelper(string searchValue, //need to change so that another can pass condition in here) {
if(string.IsNullOrEmpty(lastName)) {
return new List<People>();
}
return rawData.Where(// need to put customize condition here).ToList(i => i.Value);
}
Причина, по которой я хочу иметь образец прототипа здесь, потому что у меня есть тонна свойств объекта. Любые предложения приветствуются.