2014-12-08 43 views
0

我有數據庫表Staff,其列Name,Email,AddressDateOfBirth。在我的web應用程序中,我有一個單獨的類ClassMyBase有幾個方法。其中一種方法使用LINQ到實體:在WebForm1使用LINQ to Entities時的方法返回數據類型

public static List<Staff> ShowAll() 
{ 
    using (ModelPersonnelContainer myContainer = new 
      ModelPersonnelContainer()) 
    { 
     return myContainer.Staff.ToList(); 
    } 
} 

...然後在ButtonShowAll事件處理程序:

protected void ButtonShowAll_Click(object sender, EventArgs e) 
{ 
     GridViewAll.DataSource = ClassMyBase.ShowAll(); 
     GridViewAll.DataBind(); 
} 

到目前爲止好,但如果我添加篩選我public static List<Staff> ShowAll()

public static xyz ShowAll() 
{ 
     using (ModelPersonnelContainer myContainer = new 
       ModelPersonnelContainer()) 
     { 
      selectedRrows=from item in myContainer.Staff 
       select new 
      { 
       Name=item.Name, 
       Email=item.Email 
      } 
     } 
} 

我的方法將無法工作,因爲返回數據類型不再像以前一樣。任何簡單的方法這個返回數據類型xyz是什麼?

如果我把一切都放在一起(在我的項目沒有單獨的類),並只ButtonShowAll它會工作沒事,所以像這樣的:

protected void ButtonShowAll_Click(object sender, EventArgs e) 
{ 
      using (ModelPersonnelContainer myContainer = new 
      ModelPersonnelContainer()) 
      { 
       var selectedRows = from item in myContainer.Staff 
            select new 
            { 
            Name=item.Name, 
            Email=item.Email 
            }; 
       GridView1.DataSource = selectedRows.ToList(); 
       GridView1.DataBind(); 
} 
+1

你可以用'名單'因爲你的類型 – AlexanderBrevig 2014-12-08 09:35:21

+1

你需要添加在靜態方法中過濾後的'.ToList()'返回一個員工列表 – Mivaweb 2014-12-08 09:35:34

回答

1

你的這部分代碼創建一個匿名類:

new 
{ 
    Name=item.Name, 
    Email=item.Email 
} 

你應該明確的名字,則這個類的名字將被使用,你可以輸入你的返回類型:

​​

此外,您可能需要使用ToList(),或者改變您的返回類型IEnumerable<Staff>,因爲LINQ查詢將不會返回List<Staff>

var selectedRows = ... 
        .ToList(); 
+1

這比我提出的'dynamic'解決方案要好。有人可能會爭辯說,使用'StaffViewModel'類綁定可能會更好。然後,您可以將視圖特定規則添加到該類。 – AlexanderBrevig 2014-12-08 09:37:33

+0

@Timpe:需要更多幫助? – 2014-12-08 10:26:21

相關問題