创建列表电子邮件

本文关键字:电子邮件 列表 创建 | 更新日期: 2023-09-27 18:22:48

我需要创建一个电子邮件列表。对于每个文件夹,我需要从所有者那里获得所有电子邮件。但是,我在listRequest.Email=reader["Email"].ToList()中有一个错误;错误在"ToList()"中,我正在声明命名空间System.Collections.Generic,但未解析。

public class ListRequest
{
    public List<string> Email { get; set; }
    public string FolderAccess { get; set; }
}
public List<ListRequest> PreencheValores(SqlDataReader reader)
{
    var lista = new List<ListRequest>();
    while (reader.Read())
    {
        var listRequest = new ListRequest();
        listRequest.Email = reader["Email"].ToList();
        listRequest.FolderAccess = reader["FolderAccess"].ToString();
        lista.Add(listRequest);
    }
    return lista;
}

创建列表电子邮件

以下语句无效。

listRequest.Email = reader["Email"].ToList();

使用SqlDataReader,您只能读取单个元素,但不能像检索文件夹访问权限那样列出列表。

listRequest.FolderAccess = reader["FolderAccess"].ToString();

您可以做的一件事是将电子邮件地址检索为逗号分隔的值,然后将其拆分。还可以考虑使用字符串[]而不是List

public class ListRequest
{
    public string[] Email { get; set; }
    public string FolderAccess { get; set; }
}

public List<ListRequest> PreencheValores(SqlDataReader reader)
{
    var lista = new List<ListRequest>();
    while (reader.Read())
    {
        var listRequest = new ListRequest();   
        if(reader["Email"] != null)   
          listRequest.Email = reader["Email"].ToString().Split(',');
        if(reader["FolderAccess"] != null)
          listRequest.FolderAccess = reader["FolderAccess"].ToString();
        lista.Add(listRequest);
    }
    return lista;
}

reader["Email"]是一个对象。没有方法object.ToList()

如果它应该是一个分隔字符串,我建议在ToList()之前先执行ToString(),然后执行Split()

示例:

listRequest.Email = reader["Email"]
    .ToString()
    .Split(new [] {","}, StringSplitOptions.RemoveEmptyEntries)
    .ToList();

reader["Email"]不是一个集合。它以给定列名的本机格式获取指定列的值。

所以做这个

var lstEmail = new List<string>();
using (connection)
{
    SqlCommand command = new SqlCommand("SELECT Email FROM TableName;",connection);                                                                        
    connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
       while (reader.Read())
       {
            lstEmail .add(reader.GetString(0))
       }
    }
    reader.Close();
}