如何在字符串数组中收集数据表结果

本文关键字:数据表 结果 数组 字符串 | 更新日期: 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获得数据表的行序列。我们从行序列中选择,我们得到名称为电子邮件的列的值。