Usuário com melhor resposta
Foreach para item de coleção

Pergunta
-
Boa tarde,
Eu tenho uma coleção parecida com o seguinte exemplo:
public class Teste { public string Teste1; public long Teste2; }
Seria possível fazer um foreach com os itens desta Classe? (No caso o foreach para Teste1 e Teste2)
Se tiver dúvida por favor avisem.
Obrigado pela atenção,
André Ishihara
Respostas
-
public class Cliente
Cliente cliente = new Cliente();
{
public int Teste1;
public string Teste2;
public int Id { get; set; }
public string Nome { get; set; }
}
var fields = cliente.GetType().GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.DeclaredOnly);
foreach (var f in fields)
{
switch (f.FieldType.FullName)
{
case "System.String":
{
string valor = (string)f.GetValue(cliente);
break;
}
case "System.Int32":
{
int valor = (int)f.GetValue(cliente);
break;
}
}
}- Marcado como Resposta André Ishihara quinta-feira, 28 de maio de 2015 18:49
-
sim... desta forma:
var Fields = itemDocumento.GetType().GetProperties(); foreach(var Field in Fields) { object value=itemDocumento.GetType().GetProperty(Field.Name).GetValue(itemDocumento, null); }
aqui esta a documentaçao do metodo:
https://msdn.microsoft.com/en-us/library/b05d59ty%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Matheus L. M. C. Campos terça-feira, 26 de maio de 2015 19:19
Todas as Respostas
-
Não ficou claro, você tem uma lista de objetos Teste, e quer ler os atributos Teste1 e Teste2 de cada elemento?
List<Teste> lst = new List<Teste>(); lst.Add(new Teste("1",1)); lst.Add(new Teste("2",2)); lst.Add(new Teste("3",3)); foreach(Teste t in lst) { Console.WriteLine(t.Teste1); Console.WriteLine(t.Teste2); }
Att. Andre de Mattos Ferraz
-
public class Cliente
Cliente cliente = new Cliente();
{
public int Teste1;
public string Teste2;
public int Id { get; set; }
public string Nome { get; set; }
}
var fields = cliente.GetType().GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.DeclaredOnly);
foreach (var f in fields)
{
switch (f.FieldType.FullName)
{
case "System.String":
{
string valor = (string)f.GetValue(cliente);
break;
}
case "System.Int32":
{
int valor = (int)f.GetValue(cliente);
break;
}
}
}- Marcado como Resposta André Ishihara quinta-feira, 28 de maio de 2015 18:49
-
Então Cesar é algo parecido com isso mas queria pegar o nome dos campos para utilizar em um where de uma List.
Algo neste sentido:
List<Pedido> listaDocumentos = //Processo para preencher a lista Pedido List<Configuracao> posConfiguracao = //Processo para preencher a lista Configuracao foreach (Pedido itemDocumento in listaDocumentos) { //Processo para a listas de nome de campo foreach(var a in //lista nomes de campo) { Configuracao itemConfiguracao posConfiguracao.Where(p => p.NomeCampo = a) //Processos seguintes. } }
É possível isso ou devo pensar de outra forma?
-
-
sim... desta forma:
var Fields = itemDocumento.GetType().GetProperties(); foreach(var Field in Fields) { object value=itemDocumento.GetType().GetProperty(Field.Name).GetValue(itemDocumento, null); }
aqui esta a documentaçao do metodo:
https://msdn.microsoft.com/en-us/library/b05d59ty%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Matheus L. M. C. Campos terça-feira, 26 de maio de 2015 19:19
-