Linq语句查询

本文介绍了在MVC中使用Linq进行数据查询的几种常见方式,包括Lambda表达式和表达式查询。详细讲解了如何进行简单的查询、筛选、排序、连接以及分页和in查询,并给出了相应的Linq表达式和Lambda表达式示例。

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

(作者:张滋,撰写时间:2019年4月15日)

Linq语句查询在MVC里操作Linq语句,一般来说有两种方式,一种是Lambda表达式+扩展方法,还有另一种就是表达式,然而这个表达式的方式跟sql数据库的方式是差不多的,他们两个的区别就是在于我们是按照sql数据库执行顺序来的,比如:sql数据库的写法方式就是select row from 查询的表,而表达式的写法就是 from 查询的表 select row。下面我们来看一下:

  1. 简单的Linq查询:

Linq的表达式:var db=from 自定义的表名 in Model对象.查询的表

var db=from 自定义的表名 in Model对象.查询的表

Select 自定义的表名;

var db= from 自定义的表名 in Model对象.查询的表

Select new {自定义的表名.字段};

var db= from 自定义的表名 in Model对象.查询的表

Select new 类名{类的属性=自定义的表名.字段};

Lambda表达式:

var 自定义的表名= Model对象.查询的表.Select(n=>new {ID=n.字段}).ToList();

2.where筛选条件的Linq查询:

Linq的表达式:var db = from 自定义的表名 in Model对象.查询的表

                        where 自定义的表名.字段1 关系运算符 值

                         select 自定义的表名;

Lambda表达式:

var 自定义的表名 = Model对象.查询的表.Where(n => n.字段 关系运算符 值);

Linq的表达式:var db = from 自定义的表名 in Model对象.查询的表

                        where 自定义的表名.字段1 关系运算符 值

                        select new {自定义的表名.字段};

Lambda表达式:var 自定义的表名= Model对象.查询的表.Where(n => n.字段 关系运算符 值).Select(n=>new {自定义的表名.字段}).ToList();

3.排序orderby descending(正序)/ascending  (倒序)

Linq的表达式:

var db = (from 自定义的表名 in Model对象.查询的表

         where 自定义的表名.字段1 关系运算符 值

         orderby自定义的表名.字段1 descending  //倒序

         // orderby自定义的表名.字段1 ascending   //正序

         select自定义的表名).ToList();

Lambda表达式:

Lambda表达式的正序:var 自定义的表名 = Model对象.查询的表.OrderBy(n =>n.字段).Where(n => n.字段  关系运算符  值).ToList();

Lambda表达式的倒序:var 自定义的表名 = Model对象.查询的表.OrderByDescending(n => n.字段).Where(n => n.字段 关系运算符 值).ToList();

4.连接查询:

Linq的表达式:

var db = (from 自定义的表名 in Model对象.查询的表

              join tb in Model对象.查询的表 on 自定义的表名.字段1 equals tb.字段1

              orderby 自定义的表名.字段1 descending

              select 自定义的表名).ToList();

Lambda表达式:

var 自定义的表名 = Model对象.查询的表.Join(Model对象.查询的表, n => n.字段, m => m.字段1, (n, m) => n).OrderByDescending(n => n.字段).ToList();

5. 分页数据查询

1.Skip() 跳过前面多少条数据取余下的数据,不过要记住在Skip前面一定要使用排序orderby descending(正序)/ascending(倒序)。Skip和 Take使用前必须要使用orderby descending(正序)/ascending(倒序)

Linq的表达式:

var  db=(from 自定义的表名 in Model对象.查询的表

        orderby 自定义的表名.字段 descending

        select 自定义的表名).Skip(10);//跳过前10条数据。取前10条数据之后的数据

Lambda表达式:

var 自定义的表名= Model对象.查询的表.OrderByDescending(n => n.字段).Skip(10).ToList();

2.Take(n)数据从开始获取,获取指定n数量的连续数据。Take跟Skip一样,在使用前必须要使用orderby  descending(正序)/ascending(倒序)

Linq的表达式:

var  db=(from 自定义的表名 in Model对象.查询的表

        orderby 自定义的表名.字段 descending

        select 自定义的表名).Skip(10)

                           .Take(20)//取第11条数据到第30条数据

Lambda表达式:

var自定义的表名 = Model对象查询的表.OrderByDescending(n=>n.字段)

.Skip(10).Take(20).ToList();

6.Linq in查询

Linq的表达式:

var自定义的表名 = from 自定义的表名 in Model对象查询的表

         where 自定义的表名.字段.Contains(value)

         select自定义的表名;

Lambda表达式:

var自定义的表名= Model对象查询的表.Where(n=> n. 字段.Contains(value)).ToList();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值