linq分页组合查询

时间:2021-12-27 23:21:49

一、linq高级查

1.模糊查(字符串包含)

1  public List<User> Select(string name)
2 {
3 return con.User.Where(r =>r.UserName.Contains(name)).ToList();
4 }

2.查开头(StartsWith,以XX开头)

 public List<User> Select(string name)
{
return con.User.Where(r => r.UserName.StartsWith(name)).ToList();
}

3.查结尾

 public List<User> Select(string name)
{
return con.User.Where(r => r.UserName.EndsWith(name)).ToList();
}

4.查出来的数组长度(个数)

clist.Count()

5.最大值:Max(r => r.price);

 public decimal? SelectMax()
{
return con.car.Max(r => r.price);
}

6.最小值:Min(r => r.price);

public decimal? SelectMin()
{
return con.car.Min(r => r.price);
}

7.平均值:Average(r => r.price);

public decimal? SelectAvg()
{
return con.car.Average(r => r.price);
}

8.求和:Sum(r => r.price);

 public decimal? SelectSum() { return con.car.Sum(r => r.price); } 

9.排序:

1、OrderBy 按升序对值进行排序。 
2、OrderByDescending 按降序对值进行排序
3、ThenBy 按升序执行次要排序。 
4、ThenByDescending 按降序执行次要排序。
(1)升序:OrderBy(r => r.price)

1   public List<car> orderBy()
2 {
3 return con.car.OrderBy(r => r.price).ToList();
4 }

(2)降序:OrderByDescending(r => r.price)

  public List<car> orderBy()
{

return con.car.OrderByDescending(r => r.oil).ToList();
}

二、分页与组合查询

1.分页

1 public List<User> Select(int count, int number)
2 {
3 return con.User.Skip(count * (number - 1)).Take(count).ToList();
4 }//这里的number是当前页数,count是每页的数据条数。skip,除去前多少条数据剩下的数据。take,取几条数据,这句话就是查询除去前多少条之后的剩下的数据的前多少条数据
linq分页组合查询
 public int MaxPageNumber()
{
List<User> list = new UserData().Select();
double nu = list.Count / (Pagecount * 1.0);//不要忘了取上线
int num = Convert.ToInt32(Math.Ceiling(nu));
return num;
}//总页数
linq分页组合查询
linq分页组合查询
   void btn_next_Click(object sender, EventArgs e)
{
int NowNumber = Convert.ToInt32(Label2.Text) + 1;//下一页的页数
if (NowNumber > MaxPageNumber())
{
return;
}
Repeater1.DataSource = new UserData().Select(Pagecount, NowNumber);
Repeater1.DataBind();

Label2.Text = NowNumber.ToString();
DropDownList2.SelectedValue = NowNumber.ToString();

}//下一页
linq分页组合查询
 
 
2. 组合查询
void Button2_Click(object sender, EventArgs e)
{
using(WebDataContext con=new WebDataContext())//using比较适合用于个人开发,当花括号里的内容结束后内存自动释放,节省资源
{
var All = con.User.AsEnumerable();//AsEnumerale也是一个集合,不会占用系统空间,相当于只是把查询字符串给拼接起来,准备好,
当执行ToList时才会进行查询
if (TextBox1.Text.Trim().Length > 0)//说明这里填写了内容
{
var namelist = con.User.Where(r => r.UserName.Contains(TextBox1.Text.Trim()));

All
= All.Intersect(namelist);
}

if (tb_sex.Text.Trim() == "" || tb_sex.Text.Trim() == "")
{
var sexlist = con.User.Where(r =>Convert.ToBoolean(r.Sex)==(tb_sex.Text.Trim()==""?true:false));

All
= All.Intersect(sexlist);
}

if (tb_age.Text.Trim().Length > 0)
{
int nowyear = DateTime.Now.Year;
try {
int age= Convert.ToInt32(tb_age.Text.Trim());
int g = nowyear- age;
DateTime d
= Convert.ToDateTime(g.ToString() + "-1-1");
if (DropDownList3.SelectedValue == ">=")
{
var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) >= d);
All
= All.Intersect(agelist);

}
else
{
DateTime dd
= Convert.ToDateTime(g.ToString() + "-12-31");
var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) <= dd);
All
= All.Intersect(agelist);

}
}
catch{
}
}

Repeater1.DataSource
= All;
Repeater1.DataBind();
}
}

分页组合查(以下一页为例)

 void LinkButton2_Click(object sender, EventArgs e)//下一页
{
using (renuanDataContext ren = new renuanDataContext())
{
var all = ren.Users.AsEnumerable();
if (chayhmtext.Text.Trim().Length > 0)
{
var namelist = ren.Users.Where(r => r.Uname.Contains(chayhmtext.Text.Trim()));
all
= all.Intersect(namelist);
}
if (chasexdrop.Text.Trim().Length > 0)
{
var sexlist = ren.Users.Where(r => r.Usex.ToString() == chasexdrop.SelectedValue);
all
= all.Intersect(sexlist);
}
if (chanationdrop.Text.Trim().Length > 0)
{
var nationlist = ren.Users.Where(r => r.Unation.ToString() == chanationdrop.Text);
all
= all.Intersect(nationlist);
}
count2.Text
= Math.Ceiling(all.Count() / (countnum * 1.0)).ToString();//总页数
int page= Convert.ToInt32(count1.Text) + 1;//点击之后的页数
if(Convert.ToInt32(count1.Text)< Convert.ToInt32(count2.Text))//判断是否为最后一页
{
count1.Text
= page.ToString();
Repeater1.DataSource
= all.Skip(countnum * (Convert.ToInt32(count1.Text) - 1)).Take(countnum).ToList();

Repeater1.DataBind();
}
//页数
}//using
}