Linq 高级查
1、模糊查询
con.Users.Where(a =>a.UserName.Contains(name)).ToList(); //包含name con.Users.Where(a =>a.UserName.StartsWith(name)).ToList(); //以name开头 con.Users.Where(a =>a.UserName.EndsWith(name)).ToList(); //以name结尾
2、最大值、最小值、平均值、总和返回值是问号型(可以为空)
con.Users.ToList().Count(); //查出集合的个数 con.Users.Max(r => r.price); //查最大值 con.Users.Min(r => r.price); //查最小值 con.Users.Average(r => r.price);//查平均值 con.Users.Sum(r => r.price); //查总和 con.Users.OrderBy(r => r.price).ToList();//升序排序 con.Users.OrderByDescending(r => r.price).ToList();//降序排序
3、分页
Skip()跳过的个数;Take() 获取几条数据
//参数1:每页的个数;参数2:第几页
public List<Users> selectfen(int pagecount,int page) { return con.Users.Skip(pagecount * (page - 1)).Take(pagecount).ToList(); }
4、组合查询:
(1)集合的交集All.Intersect(oillist);
(2)AsEnumerable()代替ToList(),可以节省内存
AsEnumerable() 和 .ToList() 的区别:
- .AsEnumerable()延迟执行,不会立即执行。当你调用.AsEnumerable()的时候,实际上什么都没有发生。
- .ToList()立即执行
- 当你需要操作结果的时候,用.ToList(),否则,如果仅仅是用来查询不需要进一步使用结果集,并可以延迟执行,就用.AsEnumerable()/
IEnumerable
/IQueryable - .AsEnumerable()虽然延迟执行,但还是访问数据库,而.ToList()直接取得结果放在内存中。
(3)using指令调用了一个方法——Dispose()方法。而Dispose()方法的作用就是释放所有的使用资源。
using (LinQlianxiDataContext con = new LinQlianxiDataContext()) { var all = con.Users.AsEnumerable(); if (TextBox1.Text.Trim().Length > 0) { var allname = con.Users.Where(a => a.UserName.Contains(TextBox1.Text.Trim())).AsEnumerable(); all = all.Intersect(allname).AsEnumerable(); } if (DropDownList1.SelectedValue != "0") { var allsex = con.Users.Where(a => a.Sex == Convert.ToBoolean(DropDownList1.SelectedValue)).AsEnumerable(); all = all.Intersect(allsex).AsEnumerable(); }
Repeater1.DataSource = all;
Repeater1.DataBind();
}