linq是什么呢?
LINQ,语言集成查询(Language
Integrated Query),他提供N多查询方法,基本的是select(),where(),orderby()和groupby()这几种,那么他们有什么区别吗?下面再说.
所有 LINQ 查询操作基本都由以下三个不同的操作组成:
1、获取数据源。
2、创建查询。
3、执行查询。
linq表达式查询的写法:首先获取所需要查询的数据源
(from 自定义的表名 in Model对象.查询的表
【where 自定义的表名.字段1 关系运算符 值 【&& 自定义的表名.字段2 关系运算符 值】】
【orderby 自定义的表名.字段】
【select 自定义的表名】
).Single();//查询单条数据,当没有数据或者有多条数据时会触发异常
.ToList();//查询多条数据并转为List(列表)
.Count();//查询(统计)有多少条数据
单表查询的写法
PW_User dbUser = (from tbUser in myModel.PW_User
where tbUser.UserNuber == strUserNuber &&tbUser.ToVoidNo == true
select tbUser).Single();
多表查询的写法(1)
PW_User dbUser = (from tbUser in myModel.PW_User
where tbUser.UserNuber == strUserNuber && tbUser.ToVoidNo== true
select new
PW_User {
UserID=tbUser.UserID,
UserNuber=tbUser.UserNuber,
Password=tbUser.Password
}).Single();
把PW_User里面的属性值一个个赋值给dbUser
【select new {自定义的表名.字段1,
自定义的表名.字段2,
自定义的表名.字段3,
… }】
多表查询的写法(2)
var dbUser = (from tbUser in myModel.PW_User
where tbUser.UserNuber == strUserNuber && tbUser.ToVoidNo == true
select new {
tbUser.UserID,
tbUser.UserNuber,
tbUser.Password
}).Single();
【select new 类名{ 类的属性1=自定义的表名.字段1
类的属性2=自定义的表名.字段2,
}】
注意:
1、创建一个LINQ表达式必须要以from子句开头。
2、where子句的作用就是筛选元素,除了开始和结束位置,where子句几乎可以出现在LINQ表达式的任意位置。一个LINQ表达式中可以有where子句,也可以没有
3、LINQ表达式的结果是使用select子句获得的。select子句可以对数据进行转换,这个过程称为“投影”。select子句产生的类容,取决于前面的所有子句及其自身表达式执行后的结果。
4、如果一个数据源中元素的某个属性可以跟另一个数据源中元素的属性进行相等比较,那么这两个数据源可以用join子句进行关联
5、orderby用于对多表查询出来的数据进行排序