linq組合查詢時屬性擴展問題
學習linq的過程中,做一個表格的條件查詢並且分頁顯示。顯示的出的數據需要經過屬性拓展來實現將需要給用戶看的值顯示出來。
後臺綁定數據時用的是上下文----
if(!ispostback){
using (DataClassesDataContext con = new DataClassesDataContext())
{
List<Users> ulist = con.Users.ToList(); ;
Repeater1.DataSource = ulist.Skip(0).Take(count);
Repeater1.DataBind();
Lab2.Text = ye().ToString();
DropDownList1.DataSource = con.UserNation.ToList();
DropDownList1.DataTextField = "NationName";
DropDownList1.DataValueField = "NationCode";
DropDownList1.DataBind();
}}
這樣在第一次加載頁面時就將所有數據綁定了。
之後開始條件查詢,並且將他封為一個方法
public List<Users> data() { using (DataClassesDataContext con = new條件查詢DataClassesDataContext()) { List<Users> ulist = con.Users.ToList(); if (TextBox1.Text.Trim().Length > 0) { ulist = ulist.Where(r => r.Ids.ToString().Contains(TextBox1.Text.Trim())).ToList(); } if (TextBox2.Text.Trim().Length > 0) { ulist = ulist.Where(r => r.Username.Contains(TextBox2.Text)).ToList(); } if (minzu.SelectedValue != null) { ulist = ulist.Where(r => r.Nation == minzu.SelectedValue).ToList(); } return ulist; } }
在分頁按鈕和查詢按鈕的點擊事件裏執行這個方法進行數據綁定
此時會出現報錯!!
因為在執行完這個方法後 上下文 這個con就已經被釋放了,然而前臺綁定的數據是根據上下文的屬性擴展綁定的,所以當上下文釋放了之後,前段進行數據展示就會報錯了。
解決方法
將上下文變量寫在公共區域 讓所有的方法都能引用到,然後把之前做的條件查詢的方法裏面上下文刪掉,接受一個上下文類型的值,直接用接收的值進行查詢。
在每個按鈕的事件裏執行方法的時候都把那個變量傳進去。
linq組合查詢時屬性擴展問題