none
Acesso a colunas com nomes sequenciais RRS feed

  • Pergunta

  • Olá,

    Estou utilizando o Entity Framework e tenho uma tabela com colunas com nomes com o padrão: a1, a2, a3, etc.

    Preciso acrescentar os dados em um objeto (registro) através de um for, o problema é que não sei como influenciar dinamicamente no nome das colunas. Ficaria algo assim:

    dbEntities db = new dbEntities();
    minhaTabela obj = new minhaTabela();
    
    for (int i = 0; i < 3; i++)
    {
         //obj.a? = x;
    }
    db.minhaTabela.Add(obj);
    db.SaveChanges();

    Como posso acessar dinamicamente o nome das colunas?

    Obrigado!

    segunda-feira, 23 de setembro de 2013 03:11

Respostas

  • Olá Luiz Fernando,

    Tudo bem?

    Tente assim:

            static void Main(string[] args)
            {
                Type currentType = typeof(TipoDados);
    
                TipoDados myObject = new TipoDados();
    
                for (int i = 1; i <= 9; i++) {
                    currentType.GetProperty("A" + i).SetValue(myObject, 10 + i);                
                }
    
    
            }
    
            class TipoDados {
                public int A1 { get; set; }
                public int A2 { get; set; }
                public int A3 { get; set; }
                public int A4 { get; set; }
                public int A5 { get; set; }
                public int A6 { get; set; }
                public int A7 { get; set; }
                public int A8 { get; set; }
                public int A9 { get; set; }
            }

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 1 de outubro de 2013 15:48
    Moderador

Todas as Respostas

  • Explicando melhor:

    Queria poder acessar as colunas através do seu nome montado dinamicamente, então eu pegaria a string "a" e concatenaria um o i do for. Algo assim: obj."a" + i.ToString(); mas claro que isso não funfa :)

    segunda-feira, 23 de setembro de 2013 14:25
  • Tenta fazer dessa forma,

                dbEntities  db = new dbEntities ();
                minhaTabela obj = new minhaTabela();
    
                for (int i = 0; i < 3; i++)
                {
                    obj.a1 =  "Valor do Obj a1" + i.ToString();
                    obj.a2 = "Valor do Obj a2" + i.ToString();
                    obj.a3 = "Valor do Obj a3" + i.ToString();
                }
    
                db.minhaTabela.Add(obj);
                db.SaveChanges();


    &lt;b&gt;Diego Almeida Barreto&lt;b&gt;&lt;br/&gt; System Analyst / Software Developer&lt;/b&gt;&lt;/b&gt;

    segunda-feira, 23 de setembro de 2013 15:58
  • Assim não funciona pq eu estaria colocando os índices de a fixos no código...

    Preciso de algo que varie o número ao lado do "a", mas a1, a2, a3, etc. são nomes de colunas da minha tabela... essa é a dificuldade.

    segunda-feira, 23 de setembro de 2013 16:27
  • Deve ser algo como obj.GetByName("a"+i.ToString());

    Alguém?

    segunda-feira, 23 de setembro de 2013 17:54
  • Olá Luiz Fernando,

    Tudo bem?

    Tente assim:

            static void Main(string[] args)
            {
                Type currentType = typeof(TipoDados);
    
                TipoDados myObject = new TipoDados();
    
                for (int i = 1; i <= 9; i++) {
                    currentType.GetProperty("A" + i).SetValue(myObject, 10 + i);                
                }
    
    
            }
    
            class TipoDados {
                public int A1 { get; set; }
                public int A2 { get; set; }
                public int A3 { get; set; }
                public int A4 { get; set; }
                public int A5 { get; set; }
                public int A6 { get; set; }
                public int A7 { get; set; }
                public int A8 { get; set; }
                public int A9 { get; set; }
            }

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 1 de outubro de 2013 15:48
    Moderador