MVC的单表查询和联表查询

本文深入讲解了LINQ的单表查询与联表查询技巧,包括条件筛选、分页、排序等操作,以及如何处理查询异常,是理解LINQ查询机制的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先讲一下简单的单表查询,通常我们在做页面的时候都要通过查询数据库去获得数据,在一张表里面就有我需要的数据,所以我们就查询一张表就可以了。查询条件where可以是一条数据或者多条数据,也可以全部查询出来。不写条件where就是查询一张表的所有数据。
在这里插入图片描述
我再给大家看一下查询一条数据的截图,查询一条数据后面加个single,single返回序列唯一的元素,如果该序列并非恰好包含一个元素,则会触发异常。single是单个的意思,但是当查出来的数据为0条或者为1条以上,就会报异常,但是如果直接就是这些写,出了错很难找到出错点,所以我们查询一条数据的时候就会使用try,catch来捕获异常。最后return返回查询的数据。
在这里插入图片描述
然后肯定有人有疑问了,为什么同样是单表查询,写法却不一样。我所知道的linq对于表查询有3种。
一、select 自定义的表,一般为单表查询使用
在这里插入图片描述
二、select new 类名 -------- 一般为多表查询使用
{
类的属性1=自定义的表名.字段1,
类的属性2=自定义的表名.字段2 }
在这里插入图片描述
大家可以看到下面我有两个作为参照的写法,它们是等价的。然后上面的就和下面第二个写法一样,这样看的话会比较清楚一点。相当于new了一个表出来,然后放数据进去。

三、select new -------- 一般为多表查询使用,单表也可使用
{
自定义的表名.字段1,
自定义的表名.字段2,
自定义的表名.字段3 }
在这里插入图片描述
New一个空对象列表,var匿名数据类型会按照后面所查询的数据进行转换。
.Single() 查询单条数据,当查询出来是0条或者是2条及以上的数据时就会触发异常。
.Tolist() 查询多条数据并转换为List。
.Count() 查询多少条数据。

然后我们来看一下联表查询,在查询之前,我们应该看一下数据库,我们需要查的表之间有没有关联,如果没有关联是无法进行连接的。所以from自定义的一个表名,也相对于继承的意思,join连接下一个自定义的表,in Model对象.查询的表,on 表相同的字段,equals两个表相同的字段进行连接。主键连外键,外键连主键都是可以的。

进行分页一定要使用orderby,Orderby按照自定义表里面的字段进行升序或者倒序的排序,
ascending根据键按升序对序列的元素进行排序,当然有升序也会有降序descending。但是我更推荐降序descending,降序排序更方便我们查询新增的学生信息。
在这里插入图片描述
来看一个例子,可以看见这样写是没有报错的,但是这样写真的对吗,在页面中执行弹出一个错误的提示框。为什么不对?它在linq写法中会报错的,因为查单表的时候,原本查PW_File中的tbFile,又重新new了一个PW_File,所以就会转换失败。所以只能select tbFile。
在这里插入图片描述
在联表查询的时候就一定要new一个表。为什么呢?我们在进行多个表进行联表查询的时候,查询出来的数据最后要放到一个表里面才行,所以一定要写一个new Vo新的表来进行接收数据。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值