0

メーリング リストを作成する必要があります。フォルダーごとに、所有者からすべてのメールを取得する必要があります。しかし、 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;
}
4

3 に答える 3

2

以下のステートメントは無効です。

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

SqlDataReader を使用すると、単一の要素のみを読み取ることができますが、フォルダー アクセスを取得するために行ったようにリストすることはできません。

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

できることの 1 つは、電子メール アドレスをカンマ区切りの値として取得し、それらを分割することです。List の代わりに string[] を使用することも検討してください

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;
}
于 2013-07-17T18:00:24.427 に答える
0

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();
}
于 2013-07-17T18:21:29.140 に答える