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就已经被释放了,然而前台绑定的数据是根据上下文的属性扩展绑定的,所以当上下文释放了之后,前段进行数据展示就会报错了。

解决方法

将上下文变量写在公共区域 让所有的方法都能引用到,然后把之前做的条件查询的方法里面上下文删掉,接受一个上下文类型的值,直接用接收的值进行查询。

在每个按钮的事件里执行方法的时候都把那个变量传进去。

原文地址:https://www.cnblogs.com/big-lll/p/6937685.html