如何循环遍历多个数组

本文关键字:遍历 数组 循环 何循环 | 更新日期: 2023-09-27 18:13:51

我有两个数组,一个包含问题,另一个包含与我当前项目的FAQ页面相关的答案。

我很抱歉,如果这看起来像一个简单的问题,但我不确定我如何能够循环通过这些数组,生成HTML来包含它们,然后动态地插入问题和答案。

问题本身非常简单,按照下面的代码

@{
   var Questions = ViewData["Questions"];
   var Answers = ViewData["Answers"];
 }
 @foreach (var question in (string[])ViewData["Questions"])
 {
    var html = string.Format(@"
       <div class='panel-group' id='accordion{1}'>
         <div class='panel panel-default'>
           <div class='panel-heading'>
              <h4 class='panel-title'>
                 <a class='accordion-toggle collapsed' data-toggle='collapse' data-parent='#accordion{1}' href='#collapse{1}'>{0}</a>
              </h4>
          </div>
          <div id='collapse{1}' class='panel-collapse collapse '>
             <div class='panel-body'>answer</div>
          </div>
      </div>", question, IDGenerator);
      @Html.Raw(html);
     IDGenerator.Append("1");
   }

我尝试了一个嵌套的foreach语句来做到这一点,但这会产生6个值,我不确定如何将Viewdata["Answers"]的值插入字符串中,与现有的问题一起没有重复。

我可以对这个有一些见解吗?

如何循环遍历多个数组

完美的场景是创建一个ViewModel,其中包含您需要的所有信息(问题/答案),并将viewModels列表作为模型返回给您的视图。无论如何,假设两个数组的大小相同,您可以使用for语句并通过index访问每个元素。示例:

@{
   var questions = (string[]) ViewData["Questions"];
   var answers = (string[]) ViewData["Answers"];
}
@if (questions.Length == answers.Length)
{
   for (int i = 0; i < questions.Lenght; i++)
   {
       // here you can access questions[i] and anwsers[i]
   }
}