创建列表电子邮件

时间:2013-07-17 17:52:54

标签: c# asp.net .net

我需要创建一个电子邮件列表。 对于每个文件夹,我需要收到所有者的所有电子邮件。 但是,我在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;
}

3 个答案:

答案 0 :(得分:2)

以下声明无效。

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

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

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

您可以做的一件事是将电子邮件地址检索为逗号分隔值然后拆分它们。还可以考虑使用string []而不是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;
}

答案 1 :(得分:1)

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

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

示例:

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

答案 2 :(得分:0)

读者[“电子邮件”]不是一个集合。它在给定列名的情况下以原生格式获取指定列的值。

这样做

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();
}