Asp.net mvc IEnumerable-IEnumerable中每个项目的条件

Asp.net mvc IEnumerable-IEnumerable中每个项目的条件,asp.net-mvc,razor,ienumerable,selectlistitem,Asp.net Mvc,Razor,Ienumerable,Selectlistitem,我正在使用MVC Razor的@Html.DropDownList生成下拉列表 IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole) .Select(c => new SelectListItem { Value = c.ID, Text = c.Name

我正在使用MVC Razor的@Html.DropDownList生成下拉列表

        IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
        .Select(c => new SelectListItem
         {
             Value = c.ID,
             Text = c.Name 
         });
        ViewBag.cSfRR = cSfRR;
此表还有一个字段,用于确定表中每个项目的活动

如果我使用下面的代码,我会在c.Name后面包含活动字段

        IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
        .Select(c => new SelectListItem
         {
             Value = c.ID,
             Text = c.Name + " - " + c.Activity 
         });
        ViewBag.cSfRR = cSfRR;
我的问题是,该字段只有一个字符决定它的活动。A-激活,N-未激活。 我想为SelectListItem中值为N的项目显示未激活的自定义文本。类似于

        IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
        .Select(c => new SelectListItem
         {
             Value = c.ID,
             Text = c.Name + " - " + IF C.ACTIVITY IS "N", THEN PRINT "NOT ACTIVE" 
         });
        ViewBag.cSfRR = cSfRR;
我希望有人能帮助我实现这样的目标

下拉列表项目1

下拉列表项目2

下拉列表项目3

下拉列表项目4

下拉列表项目5-未激活

下拉列表项目6-未激活


下拉列表第7项-未激活

我不提倡使用ViewBag,但这应该可以:

IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
    .Select(c => new SelectListItem
     {
         Value = c.ID,
         Text = c.Name + (c.ACTIVITY == "N" ? " - NOT ACTIVE" : string.empty)
     });
    ViewBag.cSfRR = cSfRR;

我不提倡使用ViewBag,但这应该可以:

IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
    .Select(c => new SelectListItem
     {
         Value = c.ID,
         Text = c.Name + (c.ACTIVITY == "N" ? " - NOT ACTIVE" : string.empty)
     });
    ViewBag.cSfRR = cSfRR;
你可以用

你可以用


您可以尝试以下方法:

IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
            .Select(c => new SelectListItem
             {
                 Value = c.ID,
                 Text = c.Name + (c.Activity == "N") ? " - Not Active " : "";
             });
            ViewBag.cSfRR = cSfRR;

您可以尝试以下方法:

IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
            .Select(c => new SelectListItem
             {
                 Value = c.ID,
                 Text = c.Name + (c.Activity == "N") ? " - Not Active " : "";
             });
            ViewBag.cSfRR = cSfRR;

你的情况是相反的。c、 活动==N?-未激活:如果Win的回答解决了或帮助解决了您的问题,则应将其标记为已接受。这样一来,这个问题就不会继续出现在未回答的问题列表上,Win将得到他应该回答的分数。你的条件是相反的。c、 活动==N?-未激活:如果Win的回答解决了或帮助解决了您的问题,则应将其标记为已接受。这样就不会继续出现在未回答问题的列表中,Win将获得他回答问题的应得分数。IEnumerable cSfRR=db.TABLE.Wherem=>m.cRoleName==dbrole.Selectc=>new SelectListItem{Value=c.ID,Text=c.Name+c.Activity==N?-未激活:;};ViewBag.cSfRR=cSfRR;-只有括号应该在endIEnumerable cSfRR=db.TABLE.Wherem=>m.cRoleName==dbrole.Selectc=>new SelectListItem处关闭{Value=c.ID,Text=c.Name+c.Activity==N?-未激活:;};ViewBag.cSfRR=cSfRR;-括号应在结尾处关闭