左连接: 在查询完成之后的 Where 之前加上:into 自定义名称 1 from 自定义名称 2 in 自定义名称 1.DefaultIfEmpty() 即:List listPassengerInfor = (from tab1 in myModel.表 1 join tab2 in myModel.表 2 on 表 1.外键 equals 表 2.主键 join tab3 in myModel.表 3 on tab1.外键 equals tab3.主键 join tab4in myModel.表 4 on tab1.外键 equals tab4.主键 into 自定义 1 from 自定义 2 in 自定义 1.DefaultIfEmpty() DefaultIfEmpty() :返回指定序列的元素 where tab1.PNRID == PNRID select new PassengerVo {需要查询的详细内容 frequentPassengerNo = 自定义 2!= null ? 自定义 2.frequentPassengerNo : string.Empty }).ToList(); linq 单表查询的写法: (from 自定义的表名 in Model 对象.查询 de 的biǎo 表 【where 自定义的表名.字段 1 关系运算符 值 【&& 自定义的表名.字段 2 关系运算符 值】】 【orderby 自定义的表名.字段】 【select 自定义的表名】 【select new {[属性名 1= ]自定义的表名.字段 1, [属性名 2= ]自定义的表名.字段 2, [属性名 3= ]自定义的表名.字段 3, … }】【select new 类名{ 类的属性 1=自定义的表名.字段 1, 类的属性 2=自定义的表名.字段 2, … }】).Single();//查询单条数据,当没有数据或者有多条数据时会触发异常 .SingleOrDefault();//查询单条数据,当没有数据返回默认值(对象的默认值为 null);当有多 条数据时触发异常 .ToList();//查询多条数据并转为 List .Count();//查询有多少条数据 Lamda 表达式:查询所有的机场数据:查询全部不需要用 where 条件
List<S_Airport> airports = myModel.S_Airport.ToList(); 等价于:LinQ 表达式的:airports =(from tabAirport in myModel.Airport select tabAirport).Tolist(); Lamda 表达式:查询出起飞机场的数据:单表查询 S_Airport orangeAirport = myModel.S_Airport.Single(o => o.airportID == orangeID); 起 飞 机 场 --------Single:返回序列中满足指定条件的唯一元素,如要返回多条:Count(); 查询并判断 tab1 or tab2 是否已经存在 int oldAirportCount = (from tabAirport in myModel.S_Airport where tabAirport.tab1== airport.tab1 || tabAirport.tab2== airport.tab2 select tabAirport).Count(); linq 删除数据 先查询 再删除:S_Airport dbAirport = myModel.S_Airport.Single(tabAirport => tabAirport.airportID == airportID); 4-删除数据 myModel.S_Airport.Remove(dbAirport); //4-多表查询里面的子查询 var query = from Tab1 in myModel.表 1 join tab2 in myModel.表 2 on 表 1.外键 equals tab2 .与表一对应对外键的主键 join tab3 in myModel.表 3 on Tab1.外键 equals tab3.与表一对应外键的主键 join tab4 in myModel.表 4 on Tab1.外键 equals tab4.与表一对应外键的主键 where Tab1.flightDate == flightDate && Tab1.orangeID == orangeID && Tab1.destinationID == destinationID orderby Tab1.departureTime //根据航班的起飞时间从小到大排序 select new FlightVo() {写入需要获取的信息 And FlightVo 里面的扩展字段 //使用子查询 查询出航班的舱位数据 flightCabins = (from tab1 in myModel.表 1 join tab2 in myModel.表 2 on tab1.外键 equals tab2.主键 where tab1.flightID == Tab1.flightID select new FlightCabinVo() {需要获取的信息 }).ToList() };
//传递数据到页面 ViewBag.airports = airports; //容器-存放查询出的信息 List<创建出来的类 1> 自定义名称= new List<创建出来的类 1>( ); 然后把查询出来内容用 Add();的方法添加; Add():将对象添加到 List的结尾处; AddRange():将指定集合的元素添加到 List的结尾处; 数据库的增删查改: 1、增 insert(标准): insert into A02 专业表(专业 ID,院系 ID, 专业名称, 国家专业编码, 专业简称, 学制, 培养层次, 年级) values(143,5,‘工业艺术’,‘050111’,‘工艺’,4,‘本科’,2017) insert into A03 班级表( 专业 ID, 学号前缀, 班级名称) values(11,‘090340204’,‘电气 09-4’) 小结:(1)主键,设定为“标识符”,则不能显示为主键插入值; (2)列的数据类型是“数字型”,不可以加任何引号 (3)插入的值,所有的指令符号都是英文状态 (4)插入的值的个数和数据类型必须和表结构定义的列的个数和数据类型保持一致。 (5)新增的外键的值,必须在主键表中存在。比如:在“A03 班级表”中,新增的“专业 ID”的值,必须在“A02 专业表”中存在这个=值 (6)一条新增指令只能操作一个表。 2、修改(更新)update update A02 专业表 set 专业名称=‘视觉艺术’,国家专业编码=‘060111’,专业简称=‘视觉’,学制=5 where 专业 ID=143 update A02 专业表 set 专业名称=‘视觉艺术 1’,国家专业编码=‘060111A’,专业简称=‘视觉’,学制=5
where 专业名称=‘视觉艺术’ AND 国家专业编码=‘060111’ 小结:(1)一条新增指令只能操作一个表 (2)一定要注意是否启用 where;建议启用 “键值 ID”精确定位数据。 3、删除 Delete delete from A02 专业表 where 专业 ID=143 小结:(1)一条新增指令只能操作一个表 (2)一定要注意是否启用 where;建议启用 “键值 ID”精确定位数据。 4、查询 select 1、最简单的单表查询 (1)查询所有列 (SELECT *) SELECT 学生 ID, 班级 ID, 学号, 姓名 FROM A04 学生表 (2)查询部分列 SELECT 学号, 姓名 FROM A04 学生表 2、多表查询 (1)两个表查询 SELECT A01 学院表.院系名称, A02 专业表.专业名称, A02 专业表.国家专业编码, A02 专业表.学制, A02 专业表.培养层次, A02 专业表.年级 FROM A01 学院表 INNER JOIN A02 专业表 ON A01 学院表.院系 ID = A02 专业表.院系 ID (2)三个表连接 SELECT A01 学院表.院系名称, A02 专业表.专业名称, A02 专业表.国家专业编码, A02 专业表.学制, A02 专业表.培养层次, A02 专业表.年级, A03 班级表.班级名称 FROM A01 学院表 INNER JOIN A02 专业表 ON A01 学院表.院系 ID = A02 专业表.院系 ID INNER JOIN A03 班级表 ON A02 专业表.专业 ID = A03 班级表.专业 ID (3)条件查询 (1)where and 多表 SELECT A01 学院表.院系名称, A02 专业表.专业名称, A02 专业表.国家专业编码, A02 专业表.学制, A02 专业表.培养层次, A02 专业表.年级, A03 班级表.班级名称, A04 学生表.学号, A04 学生表.姓名 FROM A01 学院表 INNER JOIN A02 专业表 ON A01 学院表.院系 ID = A02 专业表.院系 ID INNER JOIN A03 班级表 ON A02 专业表.专业 ID = A03 班级表.专业 ID INNER JOIN A04 学生表 ON A03 班级表.班级 ID = A04 学生表.班级 ID where A01 学院表.院系 ID=3 and A02 专业表.年级=2007 and A03 班级表.班级名称=‘英语 07-2’
(2)where and or () 多表 SELECT A01 学院表.院系名称, A02 专业表.专业名称, A02 专业表.国家专业编码, A02 专业表.学制, A02 专业表.培养层次, A02 专业表.年级, A03 班级表.班级名称, A04 学生表.学号, A04 学生表.姓名 FROM A01 学院表 INNER JOIN A02 专业表 ON A01 学院表.院系 ID = A02 专业表.院系 ID INNER JOIN A03 班级表 ON A02 专业表.专业 ID = A03 班级表.专业 ID INNER JOIN A04 学生表 ON A03 班级表.班级 ID = A04 学生表.班级 ID where A01 学院表.院系 ID=3 and (A02 专业表.年级=2007 or A02 专业表.年级=2006 ) (2)like % % 模糊查询,多表 SELECT ltrim(rtrim(A01 学院表.院系名称)), A02 专业表.专业名称, A02 专业表.国家专业编码, A02 专业表.学制, A02 专业表.培养层次, A02 专业表.年级, A03 班级表.班级名称, A04 学生表.学号, A04 学生表.姓名 FROM A01 学院表 INNER JOIN A02 专业表 ON A01 学院表.院系 ID = A02 专业表.院系 ID INNER JOIN A03 班级表 ON A02 专业表.专业 ID = A03 班级表.专业 ID INNER JOIN A04 学生表 ON A03 班级表.班级 ID = A04 学生表.班级 ID where ltrim(rtrim(A02 专业表.专业名称)) like ‘%精细%’ and (A02 专业表.年级=2007 or A02 专业表.年级=2006 )
数据库的增删查改
最新推荐文章于 2024-06-07 09:00:00 发布