文字列を使用して列挙型プロパティでデータをフィルタリングする方法はありますか?LINQの文字列から列挙型でフィルタリングする方法C#
これは、ページング機能に2つの引数をとるサービスレイヤーの私の機能であり、3番目の引数はステータスでプロジェクトをフィルタリングするためのものです。
私は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