Array
(
)

Envie de Email para todos do Banco de Dados pelo Entity

Paulo Freire
|
MVP
    22 mar 2012

Ola pessoal, gostaria de uma ajuda, estou tentando enviar email para um pessoal do banco de dados, que tem email cadastrado, pelo ADO.Net consigo, porem eswtou passando para Entity, meu botão esta assim
MilitaresSP db = new MilitaresSP();
int wGrupo = Convert.ToInt16(dpGrupos.SelectedValue);
var pesquisa = from m in db.MEMBRO
where (m.EMAIL != ) &&
(m.IDGRUPO == wGrupo)
orderby m.NOME
select new
{
m.NOME,
m.EMAIL
};
//Preciso substituir essa parte de baixo, tentei com forech mas não consegui

using (MySqlDataReader rdr = pesquisa)
{
while (rdr.Read())
{
mailMsg.From = mailAddress;
mailMsg.To.Clear();
mailMsg.To.Add(rdr[Email].ToString());
smtp.Send(mailMsg);
}
}
Agradeço qualquer ajuda.

Joel Rodrigues
   - 22 mar 2012

Rapaz, a ideia é que seja assim

foreach(objeto o in colecao)
{
//faça alguma coisa
}

No seu caso, deve ser algo semelhante a

foreach(Membro m in pesquisa)
{
//faça algo, por exemplo
//string teste = m.Propriedade_1
}

Teste aí.

Paulo Freire
|
MVP
    23 mar 2012

Não consegui Joel, não reconhece o foreach,

MilitaresSP db = new MilitaresSP();
int wGrupo = Convert.ToInt16(dpGrupos.SelectedValue);
var pesquisa = from m in db.MEMBRO
where (m.EMAIL != ) && (m.IDGRUPO == wGrupo)
orderby m.NOME
select new
{
m.NOME,
m.EMAIL
};

foreach(Membro m in pesquisa) <--- erro aqui
{
//faça algo, por exemplo
//string teste = m.Propriedade_1
}

Erackson Brito
   - 23 mar 2012

Troque Membro por MilitaresSP

Joel Rodrigues
   - 23 mar 2012

Falha minha, o foreach que postei funcionaria se trouxesse objetos Membro no seu select. No caso, você seleciona objetos que contém apenas duas propriedades.
Então, altere o foreach para:
foreach(var m in pesquisa)
{
//faça alguma coisa
MessageBox.Show(m.NOME);
MessageBox.Show(m.CODIGO);
}

Marcio
   - 23 mar 2012

Você pode usar uma expressão lambda.

pesquisa.Foreach(m=> EnviarEmail(m.NOME, n.EMAIL));

Paulo Freire
|
MVP
    23 mar 2012

Obrigado Joel, deu certinho, obrigado também ao Marcio e ao Erackson.