Есть ли способ фильтрации данных с использованием свойства enum с помощью строки?Как фильтровать по перечислению из строки в LINQ C#
Это моя функция в слое услуг, которая принимает 2 аргумента для функции пейджинга, а третий аргумент - для фильтрации проектов по их статусу.
Я хочу сделать что-то вроде этого projects.Where(x => x.Status == status)
, но он вызывает ошибку, потому что я не могу сравнивать перечисление со строкой. Есть ли какое-то обходное решение для этого?
public async Task<ListResult<ProjectDTO>> GetListedProjects(int pageSize, int pageNumber, string status)
{
var projects = await unitOfWork.ProjectRepository.Get();
//i cannot filter like this
projects.Where(x => x.Status == status);
var orderedProjects = projects.OrderBy(x => x.Name);
var projectList = orderedProjects.ToPagedList(pageNumber, pageSize);
var data = projectList.Select(x => ToDTO.ProjectBuild(x)).ToList();
return new ListResult<ProjectDTO> { Data = data, TotalCount = projectList.TotalItemCount };
}
Вот мой проект модели:
public class Project : ManagementBaseClass
{
[Key]
public int Id { get; set; }
public Status Status { get; set; }
public Priority Priority { get; set; }
//etc just deleted more properties to make this cleaner
}
Это мое перечисление, которое я использую для присвоения статуса проектов, задач и т.д.
public enum Status
{
New = 1,
Active = 2,
OnHold = 3,
Testing = 4,
Finished = 5,
Dropped = 6
}
Do Вы должны использовать в качестве Parametr методы как 'строки status'? Почему бы вам не использовать статус статуса? – Tatranskymedved
@Tatranskymedved да это кажется невероятно очевидным. – jdmdevdotnet
Возможный дубликат [как сравнить строку с перечислением в C#] (http://stackoverflow.com/questions/11508865/how-to-compare-string-with-enum-in-c-sharp) – Win