有沒有辦法如何使用字符串篩選數據與枚舉屬性?如何通過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
}
你有作爲的方法'字符串status'的parametr使用?爲什麼不用'狀態狀態'來代替? – Tatranskymedved
@Tatranskymedved是這似乎非常明顯。 – jdmdevdotnet
可能重複的[如何比較字符串與C#中的枚舉](http://stackoverflow.com/questions/11508865/how-to-compare-string-with-enum-in-c-sharp) – Win