Использование LInq to SQL для получения всей пользовательской электронной почты от членства ASP.NET - PullRequest
0 голосов
/ 08 июля 2011
public ActionResult DownloadMembers()
{
    MembershipUserCollection users = Membership.GetAllUsers();
    var grid = new WebControls.GridView();
    grid.DataSource = from members in users  // the users gives error
                      select new
                      {
                          Name = members.FirstName, // This doesn't works
                          Email = members.Email     //  This doesn't works
                      };
    grid.DataBind();
    Response.ClearContent();
    Response.AddHeader("content-disposition", "attachment; filename=" + "Members" + ".xls");
    Response.ContentType = "application/excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    grid.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.End();
    return RedirectToAction("Index");
}

Привет. Приведенный выше запрос загружает все подробности из таблицы членства в формат CSV для MS Excel, он выдает ошибку для пользователей, которая:

Не удалось найти реализациюшаблон запроса для типа источника «System.Web.Security.MembershipUserCollection».«Выбрать» не найдено.Рассмотрим явное указание типа переменной диапазона 'members'.

Может ли кто-нибудь подсказать мне, как получить только адрес электронной почты пользователя и его / ее имя в CSV вместо получения всех деталей.

Отредактировано: Это работает :)

grid.DataSource = from MembershipUser u in Membership.GetAllUsers()
                  select new
                  {
                      Firstname = u.UserName,
                      Email = u.Email                                   
                  };

Ответы [ 3 ]

1 голос
/ 08 июля 2011
grid.DataSource = (from members in users  
                   select new
                   {
                       Name = members.FirstName,
                       Email = members.Email    
                   }).ToList();

Я думаю, вам нужно вызвать ToList(), поскольку LINQ выполняет отложенную загрузку, поэтому, вызывая ToList(), вы фактически вынуждены загружать данные.

0 голосов
/ 11 июля 2011
grid.DataSource = from MembershipUser u in Membership.GetAllUsers()
              select new
              {
                  Firstname = u.UserName,
                  Email = u.Email                                   
              };

Вышеуказанный linqQuery отлично работает.

0 голосов
/ 08 июля 2011
grid.DataSource = from members in users  
                  select new
                  {
                      Name = members.FirstName,
                      Email = members.Email    
                  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...