在foreach中使用if else inside将所有内容列出两次

时间:2013-02-20 13:47:31

标签: c# asp.net-mvc asp.net-mvc-3 html5 foreach

我不明白我在这里缺少什么?在我看来,我的代码列出了每组两次?

 <% foreach (var group in Model.AllGroups)  //53 entries here
 { %>     
   <% foreach (var groupForUser in Model.GroupsForUser) //2 entries here
      { %>    
      <% if (group.GroupId == groupForUser.GroupId) 
         { %>
           <div id="Div1" style="width:auto; height:50px; border:solid 1px black; margin:5px; **background-color:green**;" >
             <h3>&nbsp; &nbsp; <a href="javascript:OnGroupClicked(<%: groupForUser.GroupId %>)" id="changer1<%: group.GroupId %>"><%: groupForUser.Name %></a></h3> 
           </div>
            <input type="hidden" id="Hidden1" name="group<%: group.GroupId %>" value="" />
       <% }
          else %>  
       <% { %>
           <div id="group-select<%: group.GroupId %>" style="width:auto; height:50px; border:solid 1px black; margin:5px;" >
             <h3>&nbsp; &nbsp; <a href="javascript:OnGroupClicked(<%: group.GroupId %>)" id="changer<%: group.GroupId %>"><%: group.Name %></a></h3> 
           </div>
           <input type="hidden" id="group<%: group.GroupId %>" name="group<%: group.GroupId %>" value="" />
       <% } } }%>

有更好的方法吗?还有为什么这些团体在我看来是两次列出? 感谢

1 个答案:

答案 0 :(得分:1)

它们被列出两次,因为您在GroupsForUsers中有2个条目,并且您在每次迭代时输出每个组(因为内部else语句1}})。

更好的方法是完全切断内循环(使用Linq),例如:

foreach