【问题标题】:Using LInq to SQL to get all the user email from ASP.NET Membership使用 LInq to SQL 从 ASP.NET Membership 获取所有用户电子邮件
【发布时间】:2011-07-08 09:18:40
【问题描述】:
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");
}

嗨,上面的查询将会员表中的所有详细信息下载为 ms excel 的 CSV 格式,它给用户一个错误是:

找不到源类型“System.Web.Security.MembershipUserCollection”的查询模式的实现。未找到“选择”。考虑明确指定范围变量“成员”的类型。

谁能指导我如何在 csv 中仅获取用户电子邮件地址和他/她的姓名,而不是获取所有详细信息。

已编辑:这可行:)

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

【问题讨论】:

    标签: c# asp.net-mvc linq-to-sql csv asp.net-membership


    【解决方案1】:
    grid.DataSource = (from members in users  
                       select new
                       {
                           Name = members.FirstName,
                           Email = members.Email    
                       }).ToList();
    

    我认为您需要调用 ToList(),因为 LINQ 进行延迟加载,因此通过调用 ToList() 您实际上是在显式强制加载数据。

    【讨论】:

      【解决方案2】:
      grid.DataSource = from members in users  
                        select new
                        {
                            Name = members.FirstName,
                            Email = members.Email    
                        };
      

      【讨论】:

      • 我在上面已经提到这不起作用,它给出了我在上面粘贴的错误
      • 你在末尾加了分号,而这家伙加了“逗号”
      【解决方案3】:
      grid.DataSource = from MembershipUser u in Membership.GetAllUsers()
                    select new
                    {
                        Firstname = u.UserName,
                        Email = u.Email                                   
                    };
      

      上面的 linqQuery 工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        • 2016-11-11
        • 2014-01-19
        • 2020-01-04
        相关资源
        最近更新 更多