Linq VS lambda表达式

Linq表达式(连多表查询时用)
Linq的好坏:
一.好:内容详细 思路清晰
二.坏:查询多条时眼花缭乱 容易连错表(表较多) 容易出错
根据UserNuber查询用户:
用Linq单表查询的写法:
(From+自定义的表名+ in +Model对象,查询的表
Where自定义IDE表名。字段1关系运算符 值 && 自定义的比报名。字段2 关系运算符 值
Orderby 自定义的表名。字段(orderby是排序, orderby…descending是倒序排序)
Select 自定义的表名
Select new{ 自定义的表名。字段1,
自定义的表名。字段2,
自定义的表名。字段3,
…});
Select 类名{类的属性1=自定义的表名.字段1
类的属性 2=自定义表名.字段2,
…}).Single();//查询单条数据,当没有或有多条数据时会触发异常
.ToList();//查询多条数据并转为List
.Count();//查询有多少条数据
.ToArray();//从…创建一个数组(代表可查询多条数据)
例如:

  1. PW_User dbUser = (from tbUser in myModel.PW_User
    Where tbUser.UserNuber == pwUser.UserNuber.Trim() && tbUser.ToVoidNo == true
    Select tbUser).Single();//单条数据,当没有数据或有多条数据会触发异常
    在这里插入图片描述
    2.//多表查询–结合sql写法
    //用户表 (连) 用户角色明细表 (连) 用户名类型表
    Var listUserType = (from tbUser in myModel.PW_User
    Join tbUserRoleDetail in myModel.PW_UserRoleDetail on tbUser.UserID equals tbUserRoleDetail.UserID
    Join tbUserType in myModel.SYS_UserType on tbUserRotail.UserTypeID equals tbuserType.UserTypeID
    Where tbUser.UserID == dbUser.UserID && tbUserType.typeClass == StrUserTypeClass
    Select new {
    tbUserType.UserTypeID,
    tbUserType.UserType
    }) .ToList();

设置session
设置cookie
在这里插入图片描述

Lambda表达式(多条件查询时用)
Lambda的好坏:
一.好:言简意赅 一目了然 不易出错
二.坏:只能一条条查询 麻烦
步骤:1.查询该表时的前提是要筛选出某ID表
2.接下来就是要用lambda表达式写出要查询的条件筛选
3.然后就层层筛选(学院ID-年级ID-班级ID-)

我们用一个列子来学习lambda表达式:
eg:
//筛选条件
AcademeID = tbAcademe.AcademeID
GradeID = tbGrade.GradeID
ClassID = tbClass.ClassID
}).ToList();//前提条件(此ID表包括所有能查询到的表)

If(AcademeID>0){
listStudent = listStudent.where(m => m.AcademeID == AcademeID ).ToList();
} //m是我随意命名的
If(GradeID>0){
listStudent=listStudent.where(m => m.GradeID == GradeID).ToList();
}
If(ClassID>0){
listStudent= listStudent.where(m => m.ClassID == ClassID).ToList();
}
If(!string.IsNullorEmpty(studentDetail)){
listStudent=listStudent.where(m=>m.studentName.Contains(studentDetail)|| m.studentNumber.Contains(studentDetail)).ToList();
} //“!”代表非
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运算符 左边是参数(如果有)右边是表达式或者语句
如有不妥之处.望君评论

Linq表达式(连多表查询时用)
Linq的好坏:
一.好:内容详细 思路清晰
二.坏:查询多条时眼花缭乱 容易连错表(表较多) 容易出错
根据UserNuber查询用户:
用Linq单表查询的写法:
(From+自定义的表名+ in +Model对象,查询的表
Where自定义IDE表名。字段1关系运算符 值 && 自定义的比报名。字段2 关系运算符 值
Orderby 自定义的表名。字段(orderby是排序, orderby…descending是倒序排序)
Select 自定义的表名
Select new{ 自定义的表名。字段1,
自定义的表名。字段2,
自定义的表名。字段3,
…});
Select 类名{类的属性1=自定义的表名.字段1
类的属性 2=自定义表名.字段2,
…}).Single();//查询单条数据,当没有或有多条数据时会触发异常
.ToList();//查询多条数据并转为List
.Count();//查询有多少条数据
.ToArray();//从…创建一个数组(代表可查询多条数据)
例如:

  1. PW_User dbUser = (from tbUser in myModel.PW_User
    Where tbUser.UserNuber == pwUser.UserNuber.Trim() && tbUser.ToVoidNo == true
    Select tbUser).Single();//单条数据,当没有数据或有多条数据会触发异常

2.//多表查询–结合sql写法
//用户表 (连) 用户角色明细表 (连) 用户名类型表
Var listUserType = (from tbUser in myModel.PW_User
Join tbUserRoleDetail in myModel.PW_UserRoleDetail on tbUser.UserID equals tbUserRoleDetail.UserID
Join tbUserType in myModel.SYS_UserType on tbUserRotail.UserTypeID equals tbuserType.UserTypeID
Where tbUser.UserID == dbUser.UserID && tbUserType.typeClass == StrUserTypeClass
Select new {
tbUserType.UserTypeID,
tbUserType.UserType
}) .ToList();
设置session
设置cookie

Lambda表达式(多条件查询时用)
Lambda的好坏:
一.好:言简意赅 一目了然 不易出错
二.坏:只能一条条查询 麻烦
步骤:1.查询该表时的前提是要筛选出某ID表
2.接下来就是要用lambda表达式写出要查询的条件筛选
3.然后就层层筛选(学院ID-年级ID-班级ID-)

我们用一个列子来学习lambda表达式:
eg:
If(AcademeID>0){
listStudent = listStudent.where(m => m.AcademeID == AcademeID ).ToList();
} //m是我随意命名的
If(GradeID>0){
listStudent=listStudent.where(m => m.GradeID == GradeID).ToList();
}
If(ClassID>0){
listStudent= listStudent.where(m => m.ClassID == ClassID).ToList();
}
If(!string.IsNullorEmpty(studentDetail)){
listStudent=listStudent.where(m=>m.studentName.Contains(studentDetail)|| m.studentNumber.Contains(studentDetail)).ToList();
} //“!”代表非
注:=>代表是运算符 左边是参数(如果有)右边是表达式或者语句
//筛选条件
AcademeID = tbAcademe.AcademeID
GradeID = tbGrade.GradeID
ClassID = tbClass.ClassID
}).ToList();//前提条件(此ID表包括所有能查询到的表)
如有不妥之处.望君评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值