如何在字符串数组中收集数据表结果
本文关键字:数据表 结果 数组 字符串 | 更新日期: 2023-09-27 18:30:18
我有一个带有电子邮件列的表格。它包含一些电子邮件地址。我想将这些详细信息放入字符串数组中。帮助我找到一个合适的解决方案。谢谢。
法典:
alertDataSetTableAdapters.tbl_AutoAssignCadTeamTableAdapter EM;
EM = new alertDataSetTableAdapters.tbl_AutoAssignCadTeamTableAdapter();
DataTable dt = new DataTable();
dt = EM.GetEmpMail();
DT获取电子邮件地址。
编辑:从OP的帖子更新到答案部分
现在我收到另一个错误。错误是:"The specified string is not in the form required for an e-mail address."
private void timer1_Tick(object sender, EventArgs e)
{
alertDataSetTableAdapters.tbl_AutoAssignCadTeamTableAdapter EM;
EM = new alertDataSetTableAdapters.tbl_AutoAssignCadTeamTableAdapter();
DataTable dt = new DataTable();
dt = EM.GetEmpMail();
string[] emails = dt.AsEnumerable().Select(x => x.Field<String>("Email")).ToArray();
MailMessage loginInfo = new MailMessage();
loginInfo.To.Add(emails.ToString()); // error popup here.
loginInfo.From = new MailAddress("fromID@gmail.com");
loginInfo.Subject = "Hai";
loginInfo.Body = "Hai";
loginInfo.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("fromID@gmail.com", "***");
smtp.Send(loginInfo);
}
您可以添加带有循环和发送的电子邮件。
试试这个
private void timer1_Tick(object sender, EventArgs e)
{
alertDataSetTableAdapters.tbl_AutoAssignCadTeamTableAdapter EM;
EM = new alertDataSetTableAdapters.tbl_AutoAssignCadTeamTableAdapter();
DataTable dt = new DataTable();
dt = EM.GetEmpMail();
string[] emails = dt.AsEnumerable().Select(x => x.Field<String>("Email")).ToArray();
MailMessage loginInfo = new MailMessage();
foreach (var email in emails)
{
loginInfo.To.Add(email);
}
loginInfo.From = new MailAddress("fromID@gmail.com");
loginInfo.Subject = "Hai";
loginInfo.Body = "Hai";
loginInfo.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("fromID@gmail.com", "***");
smtp.Send(loginInfo);
}
所以您希望所有电子邮件都String[]
?您可以使用 Linq-To-DataTable
.使用"DataRow.Field
"仅选择电子邮件列。
string[] emails = dt.AsEnumerable().Select(row => row.Field<String>("Email")).ToArray();
您可以使用 LINQ 来实现您的目的:
dt = EM.GetEmpMail();
string[] emails = dt.AsEnumerable()
.Select(x=>x.Field<String>("Email"))
.ToArray();
最初,我们使用DataTable
的扩展方法AsEnumerable
获得数据表的行序列。我们从行序列中选择,我们得到名称为电子邮件的列的值。