当我填充我的复杂属性List <object>

时间:2016-04-05 18:56:59

标签: c#

我在填充我的对象属性时遇到问题,这是一个List。在下面,我将能够更好地向您展示问题。

Grupo grupo = null;
SubGrupo subGrupo = null;

if (Regex.IsMatch(linhaTrim, @"\b(?<!\.)([A-Z]{1,})(?!\.)\b"))
{
    grupo = new Grupo(Convert.ToInt32(arraySplit[arraySplit.Length - 1]), grupoTextoTrim);
    if (grupoTextoTrim.Equals("DISPONIBILIDADE DE DOCUMENTOS OFICIAIS"))
    {
        grupo.ler = false;
        indice.Add(grupo);
        break;
    }
    else
    {
        grupo.ler = true;
    }

    grupo.SubGrupos = new List<SubGrupo>();
    indice.Add(grupo);
}
else
{
    //aqui será feita a verificação se existe ou não no indice um determinado subgrupo
    //subGrupo = new SubGrupo(Convert.ToInt32(arraySplit[arraySplit.Length - 1]), grupoTexto.Trim());
    subGrupo = new SubGrupo();
    subGrupo = subGrupos.FirstOrDefault(x => x.descricao.Equals(grupoTextoTrim));
    subGrupo.pagina = Convert.ToInt32(arraySplit[arraySplit.Length - 1]);
    grupo.SubGrupos.Insert(grupo.SubGrupos.Count, subGrupo);
}

问题出在这一行: subGrupo.pagina = Convert.ToInt32(arraySplit[arraySplit.Length - 1]);

在我的循环中,descricao属性中有一些相同的引用,这些相同引用之间的区别是SubGrupo对象的属性页。

在循环之后,当我检查我的列表时,我应该有这样的东西:

Grupo 
   descricao : x
   SubGrupo : 
        descricao : y
        pagina : y
   End SubGrupo
End Grupo

Grupo 
   descricao : x
   SubGrupo : 
        descricao : y
        pagina : z
   End SubGrupo
End Grupo

但是现在为pagina返回相同的值。

有人可以帮助我吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果共享实现的循环逻辑,将会很有帮助。但基于逻辑,你发布的问题似乎有可能在两个地方出现:

  1. 如果arraySplit(整数数组)初始化外部循环而你 没有从数组中删除元素, arraySplit[arraySplit.Length - 1]将始终返回相同的值。

    E.g。 int[] arraySplit = {1,2,3,4};

    始终

    arraySplit[arraySplit.Length - 1] = 4

  2. 如果grupoTextoTrim初始化外部循环,或者在每次迭代中使用相同的值初始化,则同一对象的副本将添加到列表中: subGrupo = subGrupos.FirstOrDefault(x => x.descricao.Equals(grupoTextoTrim));