创建列表电子邮件
本文关键字:电子邮件 列表 创建 | 更新日期: 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();
}