2011-07-08 55 views
0
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中,它給用戶上的錯誤是:使用LINQ to SQL從ASP.NET成員

無法找到源類型「System.Web.Security.MembershipUserCollection」的查詢模式的實現。 '選擇'未找到。考慮明確指定範圍變量'members'的類型。

任何人都可以指導我如何在csv上獲取用戶的電子郵件地址和他/她的名字,而不是獲取所有的細節。

編輯:這工作:)

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

回答

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

上面的linqQuery工作正常。

0
grid.DataSource = from members in users 
        select new 
        { 
         Name = members.FirstName, 
         Email = members.Email  
        }; 
+0

我上面說,這並不工作已經提到的,它給我所粘貼的上述 –

+0

你已經在末尾添加分號,而這傢伙已經加入「逗號」 –

+0

我已經編輯了一個錯誤,它並不適用同樣的錯誤 –

1
grid.DataSource = (from members in users 
        select new 
        { 
         Name = members.FirstName, 
         Email = members.Email  
        }).ToList(); 

我認爲你需要調用ToList()爲LINQ做延遲加載,所以通過調用ToList()你實際上是在明確強制加載數據。