Linq语句基础

集成化查询语言,相当于一个通用的数据查询接口

作用

面向对象中没有自己的查询语言,Linq是操作不同数据之间形成互通(交互、桥梁);

形成不同数据的统一的访问接口;配合EF进行多表关联查询

三大部分

Linq To Objects

Linq To Xml

Linq To ADO.NET

 LINQ to ADO.NET主要负责数据库的查询,而LINQ to ADO.NET又包括 LINQ to SQL,LINQ to DataSet,LINQ to Entrties这三部分。(又分为三部分)

Linq to Sql

1.单表查询
//sql="select * from SysInfo" 
var data = from a in db.SysInfo
            select a;

//sql="select sname,spwd from SysInfo"
 var data1 = from a in db.SysInfo
            select new{
                a.sname,
                a.spwd
            };
2.条件查询

[where 条件语句](进行条件筛选,可以使用&&、||链接多个条件)

where条件一般在取结果集之前筛找

where条件可以替换成 链式查询

在结果集后 .where(lamda表达式条件语句)

//sql="select * from SysInfo where sid<5" 
var data = from a in db.SysInfo
            where a.sid<5
            select a;

//sql="select * from SysInfo where sid<5 and spwd!='123'" 
data.Where(a => a.spwd != "123").ToList();
3.模糊查询

字符串中的contains方法

条件中的Contains("值") 模糊查询 ”值“ 被包含在a.aname里的所有值都会被查询到

//sql="select * from SysInfo where sname like '%张%'" 
var data=from a in db.SysInfo
         where a.sname.Contains("张")
         select a
4.排序

使用链式查询

.OrderBy(lamda表达式) 顺序排

.OrderByDescending(lamda表达式) 倒序排

可以使用ThenBy ()/.ThenByDescending() 进行多项排序

//sql="select * from SysInfo orderby sid desc,spwd asc" 
//倒序
var data=(from a in db.SysInfo
         select a).OrderByDescending(a => a.sid).ThenBy(a=>a.spwd)

//sql="select * from SysInfo orderby sid asc,spwd desc" 
//顺序
var data=(from a in db.SysInfo
         select a).OrderBy(a => a.sid).ThenByDescending(a=>a.spwd)
5. in 关键字

结果集中是否包含所需要的字段

//sql="select * from SysInfo where sid in(1,2)" 
int[] arr = { 1, 2 };
var datain=from a in db.SysInfo
           where arr.Contains(a.sid)
           select a;
6.聚合函数

max / min / sum / count / average...

直接在结果集后 使用链式查询(特定聚合函数方法)

//聚合函数
//sql="select max(sid) from SysInfo "
var datahs = (from a in db.SysInfo
            select a).Max(a=>a.sid);
7.分组
//分组
//sql="select sid,count(sid) from SysInfo group by sid"
var datagroup = from a in db.SysInfo
                group a by a.sid into g

                select new {

                /*=左边相当于别名*/

                    gid = g.Key,//分组的关键词 == a.sid

                    gcount=g.Count(),

                };

8.多条件分组
 //多字段分组
            //sql="select sid,sname,count(sid) from SysInfo group by sid,sname"
            var datagroupmore = from a in db.SysInfo
                            //匿名方式指代
                            group a by new { a.sid, a.sname } into g
                            select new
                            {
                                gid = g.Key.sid,
                                gname=g.Key.sname,
                                gcount = g.Count(),
                            };

9.联合查询 内联
             //联合查询 内联
            var datajoin = from a in db.SysInfo
                           join b in db.UserInfo
                           on a.sid equals b.gid //equals 相当于== Linq中无=
                           select new
                           {
                               a.sid,
                               a.sname,
                               b.uname,
                               b.uPhone
                           };
10.联合查询 左联
 //联合查询 左联
            var dataleftjoin = from a in db.SysInfo
                           join b in db.UserInfo
                           on a.sid equals b.gid into temp  //把右表放入临时表

                           //右表的数据与左表无相关联的以空值填充
                           from t in temp.DefaultIfEmpty() 
                           select new
                           {
                               a.sid,
                               a.sname,
                               // a,也可以直接取出a的所有,但是使用的时候需要进行转换
                               t.uname,
                               t.uPhone
                           };

11. LINQ 创建一个自定义模型类

Linq 的结构

var data= from in 开头 select 结尾

接受的结果集是动态类型,查询后的结果 使用 隐式类型 var接收

from 别名(自定义) in db.SysInfo(为取别名的表指定数据表)

[where 条件语句](进行条件筛选,可以使用&&、||链接多个条件)

select 查询的表结构及数据

 //Linq from in 开头 select 结尾 配合ef进行多表操作
var data = from a in db.SysInfo
            where a.sid<5
            select a;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值