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
何时起作用?