考虑一个foreach循环中的bool

时间:2013-03-01 09:17:37

标签: c# asp.net-mvc razor asp.net-mvc-4

对于我期望的人来说,这应该是一些简单的观点,但作为一名前端开发人员试图掌握MVC剃须刀并且没有事先知道C#,这让我很难过。

我有一个布尔变量hasSecond,我想在以下foreach中考虑:

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1))
    {
        <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option>
    }

我只想在@reason.AtrributehasSecond时显示true值为'SECOND'的选项,否则请勿显示这些选项。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1))
    {
        if(hasSecond||reason.Attribute!="SECOND")
        {
            <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option>
        }
    }

应该做的伎俩。我想以前我的逻辑略有错误。这将显示option不是reason.Attribute的所有SECOND s。如果 SECOND,只有option为真,才会显示hasSecond

答案 1 :(得分:1)

只需将其添加到Where语句:

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1 && hasSecond))
    {
        <option data-confirm-type="1" data-confirm-attr="@reason.Attribute"   value="@reason.ID">@reason.Text</option>
    }

答案 2 :(得分:0)

您可以通过以下方式执行此操作,只需在foreach循环中添加一个if语句,然后在where处添加另一个子句。

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1 && e.Attribute=="SECOND"))
{
    if(hasSecond)
    {
        <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option>
    }
}

如果您只想在data-confirm-attr="@reason.Attribute"为假时删除hasSecond,则可以使用以下内容:

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1))
{
    <option data-confirm-type="1" @if(hasSecond) { <text>data-confirm-attr="@reason.Attribute"</text> } value="@reason.ID">@reason.Text</option>
}