Array
(
)

Foreach duplicando dados

Randrade
   - 02 fev 2015

Possuo 2 foreachs, para fazer uma busca de datas em ViewBags, onde eu retorno ambos em um select. Porém para cada item do primeiro foreach, ele faz um loop completo no segundo, assim duplicando os valores, por cada item do primeiro. Ex: Caso eu tenha 3 itens no primeiro foreach e 2 itens no segundo, meu resultado final será de 6 itens no meu select, sendo que ele repete dos dados, após o loo´dp primeiro. Meu problema é: Como fazer para não repetir esses dados?
Meus Foreahcs na view:
#Código

<div class="col-md-9">
                        <select class="form-control" style="width:250px" id="selectPeriodo" name="sAquisitivo">
                            @foreach (var date in ViewBag.Ferias)
                            {
                                foreach (var fim in ViewBag.FimFerias)
                                {
                                    <option>
                                        @Convert.ToDateTime(date).ToShortDateString() à @Convert.ToDateTime(fim).ToShortDateString()
                                    </option>
                                }
                            }
                        </select>
                    </div>

Minhas ViewBags:
#Código
 ViewBag.Ferias = funcionarioFeriasRepository.Lista.Where(r => r.CdMatricula == matricula && r.SqContrato == contrato && r.DtInicioConcessao == null)
            .Select(x => x.DtInicioPeriodo).ToList();
            ViewBag.FimFerias = funcionarioFeriasRepository.Lista.Where(r => r.CdMatricula == matricula && r.SqContrato == contrato && r.DtInicioConcessao == null)
            .Select(x => x.DtFimPeriodo).ToList();

Model:
#Código
[DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? dtInicioFerias { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? dtFimFerias { get; set; }

        public string sAquisitivo { get; set; }

Resultado Atual:
Clique na imagem para abrir em uma nova janela

Randrade
   - 02 fev 2015

Mudando meu select na view, o problema foi resolvido.

#Código

 <div class="col-md-9">
                             <select class="form-control" style="width:250px" id="selectPeriodo" name="sAquisitivo">
                          @for (int i = 0; i < ViewBag.Ferias.Count; i++)
                          {
                              var l = 0;
                              while (l < 1)
                              {
                                <option>
                                    @Convert.ToDateTime(ViewBag.Ferias[i]).ToShortDateString() à @Convert.ToDateTime(ViewBag.FimFerias[i]).ToShortDateString()
                                </option>
                                  l++;
                              }
                          }
                        </select>