C# 如何根据条件从枚举中检索数据?
我的代码中有一个枚举C# 如何根据条件从枚举中检索数据?,c#,C#,我的代码中有一个枚举 public enum AdmitStatus { Admitted = 1, NotAdmitted = 2, Pending = 3 } 我想创建一个具有布尔参数状态的方法: public JsonResult GetAdmitStatusSelctListValuesBasedOnStatus(bool Status); 所以,当状态值为true时,我只希望在列表中被允许,而当状态为False时,我
public enum AdmitStatus
{
Admitted = 1,
NotAdmitted = 2,
Pending = 3
}
我想创建一个具有布尔参数状态的方法:
public JsonResult GetAdmitStatusSelctListValuesBasedOnStatus(bool Status);
所以,当状态值为true时,我只希望在列表中被允许,而当状态为False时,我希望在列表中不被允许和扩展,那么我如何才能得到这个呢?我还需要该枚举值的int,因为我需要将其与select list绑定。public IEnumerable getadmitstatuselctlistValuesBasedOnStatus(bool Status){
public IEnumerable<string> GetAdmitStatusSelctListValuesBasedOnStatus(bool Status) {
if (Status) {
return Enum.GetValues(typeof(AdmitStatus)).Cast<AdmitStatus>().Where(x => x == AdmitStatus.Admitted).Select(v => v.ToString()).ToList();
} else {
return Enum.GetValues(typeof(AdmitStatus)).Cast<AdmitStatus>().Where(x => x != AdmitStatus.Admitted).Select(v => v.ToString()).ToList();
}
}
如果(状态){
返回Enum.GetValues(typeof(AdmitStatus)).Cast()。其中(x=>x==AdmitStatus.acempted)。选择(v=>v.ToString()).ToList();
}否则{
返回Enum.GetValues(typeof(AdmitStatus)).Cast()。其中(x=>x!=AdmitStatus.acempted)。选择(v=>v.ToString()).ToList();
}
}
您可以执行以下操作:
if(Status)
statuses= statuses.Where(status=>status==AdmitStatus.Admitted);
else
statuses= statuses.Where(status=>status!=AdmitStatus.Admitted);
然后可以检索这些枚举值的int等效值,如下所示:
statuses= statuses.Select(x=>(int)x).ToList();
您不显示列表的外观,但可以使用LINQ对列表进行筛选,如下所示
从列表中的x返回
身份在哪里?x、 AdmitStatus==AdmitStatus.acempted:x.admintstatus!=承认,承认
选择x;
但我认为更好的选择是使用AdmitStatus作为getadmitstatuselctlistValuesBasedOnStatus方法参数,而不是bool参数
public JsonResult getadmitstatusselctlistvaluesbbasedonstatus(AdmitStatus[]状态);
然后您可以将查询更改为
从列表中的x返回
其中status.Contains(x.AdmitStatus)
选择x;
要从枚举生成选择列表,可以执行以下操作
returnnewselectlist(从Enum.GetValues(typeof(AdmitStatus))中的x选择新的{Value=(int)x,Name=Enum.GetName(typeof(AdmitStatus),x)},“Value”,“Name”);
请与我们分享一个。确保包含示例输入数据和基于该输入数据的预期数据。既然它基于状态,那么最终为什么不使用AdmitStatus
参数而不是bool
和开关
?在您当前的代码中,AdmitStatus
何时起作用?