Как отфильтровать элементы общего словаря, используя разные поля объекта?

Мне нужно реализовать класс репозитория, который позволяет пользователю выполнять поиск по различным полям объекта. Получив данные из другого сервиса, я сохраняю результат в 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);
}

Причина, по которой я хочу иметь образец прототипа здесь, потому что у меня есть тонна свойств объекта. Любые предложения приветствуются.

0 ответов

Другие вопросы по тегам