linQ:语言集成查询(Language INtegrated Query,LINQ)是一项微软技术,新增一种自然查询的SQL语法到.NET Framework的编程语言中,可支持Visual Basic .NET以及C#语言。
命名空间:System.Linq;
注意:Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版本,否则无法使用。
选择3.5或更高版本的.NET Framework之后,创建的新项目中会自动包含System.Linq的命名空间。
LINQ to SQL :高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名
1、LinQ创建
Linq文件是dbml结尾,一个数据库对应一个Linq文件
增删改查的方法
增
Data0720DataContext con = new Data0720DataContext();//实例化LinQ类 public UserData() { } public void Insert(Users u) { con.Users.InsertOnSubmit(u);//Users数据库表明,u 要添加的对象
con.SubmitChanges();//提交执行添加
}
删
public void Delete(string username) { //根据username查出Users对象 Users u = con.Users.Where(r => r.UserName == username).FirstOrDefault(); //删除 con.Users.DeleteOnSubmit(u); con.SubmitChanges(); }
r => r.UserName == username是Lambda 表达式
参数列表 => 语句或语句块
其中“参数列”中可包含任意个参数(与委托对应),如果参数列中有0个或1个以上参数,则必须使用括号括住参数列
在 is 或 as 运算符的左侧不允许使用 Lambda。
适用于匿名方法的所有限制也适用于 Lambda 表达式。
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没 有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
改
public void Update(Users u) { //查要修改的对象 Users uuu = con.Users.Where(r => r.UserName == u.UserName).FirstOrDefault(); if (uuu != null) { //修改的列 uuu.PassWord = u.PassWord; uuu.NickName = u.NickName; uuu.Sex = u.Sex; uuu.Birthday = u.Birthday; uuu.Nation = u.Nation; } con.SubmitChanges(); }
查(以car表为例查询方法)
1.模糊查(包含):.Contains
public List<Car> Select(string name) { return con.Car.Where(r => r.Name.Contains(name)).ToList(); }
2.开头查:.StartsWith(name)
public List<Car> Select(string name) { return con.Car.Where(r => r.Name.StartsWith(name)).ToList();//开头查 }
3.结尾:.EndsWith(name)
public List<Car> Select(string name) { return con.Car.Where(r => r.Name.EndsWith(name)).ToList();//结尾查 }
4.查个数:查所有取集合的个数.Count()
List<Car> list = new CarData().Select();
Label1.Text = list.Count.ToString();
5.最大值:Ma(r => r.price);最小值:Min(;平均值:Average();求和:Sum();查看一列
public decimal? SelectMAX() { return con.Car.Max(r => r.Price);//取一列的最大值返回decimal?类型 }
6.排序:升序:OrderBy(r => r.price)降序:OrderByDescending(r => r.price)
public List<Car> Orderby() { return con.Car.OrderBy(r => r.Price).ToList(); }
7.分页:
public List<car> Select(int count, int number) { return con.car.Skip(count * (number - 1)).Take(count).ToList(); }
8.组合查询:取集合的交集Intersect()
using (mydbsDataContext con = new mydbsDataContext()) { var All = con.Car.AsEnumerable(); if (TextBox1.Text.Trim().Length > 0) { var namelist = con.Car.Where(r => r.Name.Contains(TextBox1.Text.Trim())).AsEnumerable(); All = All.Intersect(namelist); } if (TextBox2.Text.Trim().Length > 0) { var brlist = con.Car.Where(r => r.Brand.Contains(TextBox2.Text.Trim())).AsEnumerable(); All = All.Intersect(brlist); } if (TextBox3.Text.Trim().Length > 0) { var oillist = con.Car.Where(r => r.Oil.ToString() == TextBox3.Text.Trim()).AsEnumerable(); All = All.Intersect(oillist); } Repeater1.DataSource = All; Repeater1.DataBind(); }