2013-03-01 66 views
0

对于我期望的人来说,这应该是一些简单的要点,但是作为一名前端开发人员,试图用零知识的C#来掌握MVC剃须刀,这让我难住了。在foreach循环中考虑一个布尔

我有一个布尔值VAR 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.Atrribute值,显示一个选项“第二”时hasSecondtrue,否则不要显示这些选项。

感谢您的帮助!

回答

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 s,其中reason.Attribute不是SECOND。如果它SECOND,它将只显示option如果hasSecond为真。

+0

这很完美,谢谢! – 2013-03-01 10:02:19

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> 
    } 
} 

如果你只是想,如果hasSecond是假的data-confirm-attr="@reason.Attribute"删除,你可以使用以下命令:

@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> 
} 
+0

我想有更多要求的条件不仅仅是'hasSecond' - 否则,为什么把它放在里面* *了'foreach'? – 2013-03-01 09:22:14

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> 
    }