C#-System-LinQ-条件精确查询、高级查询
多条件查询:Repeater1.DataSource = con.Car.Where(r => r.Name == name && r.Price == Convert.ToDecimal(price)).ToList();
高级查询:
一、模糊查询(包含字符串)
Repeater1.DataSource = con.Car.Where(r => r.Name.Contains(name)).ToList();
二、开头、结尾
Repeater1.DataSource = con.Car.Where(r => r.Name.StartsWith(name)).ToList();
Repeater1.DataSource = con.Car.Where(r => r.Name.EndsWith(name)).ToList();
三、最大值、最小值
//模糊查询并绑定数据
IQueryable<Car> clist = con.Car.Where(r => r.Name.Contains(name)).AsQueryable();
Repeater1.DataSource = clist;
//展示数据个数
Label1.Text = clist.Max(r => r.Price).ToString();
//展示数据中最小的
Label2.Text = clist.Min(r => r.Price).ToString();
四、个数
//模糊查询并绑定数据
IQueryable<Car> clist = con.Car.Where(r => r.Name.Contains(name)).AsQueryable();
Repeater1.DataSource = clist;
//展示数据个数
Label1.Text = clist.Count().ToString();
五、平均值、和
平均值:Average
Label1.Text = con.Car.Average(r => r.Price).ToString();
和:Sum
Label1.Text = con.Car.Sum(r => r.Price).ToString();
六、升序、降序
升序:
Repeater1.DataSource = con.Car.OrderBy(r => r.Price);
降序:
Repeater1.DataSource = con.Car.OrderByDescending(r => r.Price);
分段排序 - ThenBy()
IQueryable<Car> clist = con.Car.AsQueryable().OrderBy(r => r.Brand).ThenBy(r => r.Oil);
.ToList()分页
int pagesize = 分页大小(每一页大小)
int pageindex = 第几页(一般这个变量是随循环递增的)
使用方法
.Skip(pagesize*pageindex).Take(pagesize)
.Skip() 忽略数,表示从哪里开始分页
.Take() 表示每一页截取多少个记录
注意 ,数列是从0开始的,也就是说,第一个是 0,第二个是 1 ... ...
以上方法结合,截取的只是一页,需要在循环中使用,不断截取下一页
例如
{1,2,3,4,5,6,7,8,9,10}
.Skip(5).Take(4) //忽略5个数,即从第(5+1)个数开始截!共截取4个
输出 6,7,8,9
Linq 中查询一个表中指定的字段
Linq中查询一个表中指定的几个字段:
var ts = t.FindAllItems().Where(P => P.CompanyID == CurSiteUser.CompanyId).Select(s => new { BillPeriod = s.BillPeriod,FieldB=s.FieldB }).Distinct().ToList().OrderByDescending(s => s.BillPeriod).Take(24);
// FindAllItems()为查询对应表的所有数据的方法;
// Where 里面为查询条件
// Select 为查询的筛选条件 new{} 里面就是要查询的字段
//Distinct() 为去除重复的查询
//ToList() 为将查询转换为List<>
//OrderByDescending() 表示排序字段及排序方法(倒序排列)
//Take(N) 表示查询前N条数据