添加/更新IEnumerable列表

问题描述:

我只想问如何通过/更新IEnumerable列表,将用于显示下拉菜单,因为我缺少一组行以添加它并更新enumlist,以便我只能获取文本和值是ArrivedCompleted。这是我在我的模型在我的控制器添加/更新IEnumerable列表

public enum DeliveryPermitStatus 
    { 

     Arrived = 1, 
     Approved = 2, 
     Cancelled = 3, 
     Completed = 4, 
     Submitted = 5 
    } 

代码,所以我可以添加可枚举列表中的过滤enumlist和我缺少代码viewbag更新enumlist将用于在下拉列表显示

var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem 
       { 
        Text = v.ToString(), 
        Value = ((int)v).ToString() 
       }); 

       if (User.IsInRole(StaticRoleNames.Admin)) //your condition here 
       { 
        foreach(var item in enumlist) 
        { 
         if(item.Text == "Arrived" || item.Text == "Completed") 
         { 
          //Missing Code Here 

         } 
        } 

       } 

       ViewBag.enumlist = enumlist; 

我想你要问/想做的是将ViewBag.enumlist编辑为基于用户角色的缩减值集合吗?如果是这样,那么你可以过滤并分配你的if语句里面的列表,并放弃foreach循环:

var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem 
      { 
       Text = v.ToString(), 
       Value = ((int)v).ToString() 
      }); 

      if (User.IsInRole(StaticRoleNames.Admin)) //your condition here 
      { 
       ViewBag.enumlist = enumlist.Where(t => t.Text == "Arrived" || t.Text == "Completed"); 
      } 

,或者,如果你需要保持foreach循环,那么你需要创建一个单独的列表跟踪的枚举列表中的“可用值”的:

var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem 
      { 
       Text = v.ToString(), 
       Value = ((int)v).ToString() 
      }); 

      List<SelectListItem> availableOptions = new List<SelectListItem>(); 

      if (User.IsInRole(StaticRoleNames.Admin)) //your condition here 
      { 
       foreach(var item in enumlist) 
       { 
        if(item.Text == "Arrived" || item.Text == "Completed") 
        { 
         availableOptions.Add(item); 
        } 
       } 

      } 

      ViewBag.enumlist = availableOptions; 
+2

看起来似是而非的选项+1,否则要求不是从问题本身 –

+0

这很清楚肯定是我正在寻找!谢谢你,先生! –

不能元素添加到IEnumerable,但你可以很容易地从它那里得到一个列表。 只需在分配给var enumlist之前调用ToList()。

现在你可以添加元素,它(小心,而枚举它不添加元素)