当前位置: 首页 > news >正文

用linqPad帮助你快速学习LINQ

在这里我向大家推荐的一个具是LinqPad有了这个工具并熟练使用就可以很快学习并掌握linq

linqPad下载地址:http://www.linqpad.net/

它也自带了很多例子方便大家查询,linqPad支持object ,xml,sql ,  to linq这里我只讲一下sql to linq

好多同学不知道怎么用linq完成 left join ,inner join 等,这里我就用这个工具给大家实现一下

linqpad 会给我们同时生成lambda表达式,sql和IL 我一般情况下有linq的lambda不会的时候,就用Linqpad来调试得到结果

打开它的主页面看一下,点AddConnection 就可以添加数据库连接

 先在数据库里建一个库MyDataDemo两个表Classes和Student

create database 
MyDataDemo
go 
use MyDataDemo
go

drop table Student
create table Classes
(
    class_Id int ,
    class_Name varchar(100)
)
create table Student
(
    st_Id int,
    st_Name varchar(100),
    class_Id int
)

insert into Classes values(1,'OneC')
insert into Classes values(2,'TwoC')
insert into Classes values(3,'ThreeC')

insert into Student values(1,'xiaoMing',1)

insert into Student values(2,'zhangqiang',2)
insert into Student values(3,'lihong',3)

insert into Student values(4,'wangsi',1)
insert into Student values(5,'zhaoWu',1)
insert into Student values(6,'WangLiu',2)
数据库里建两个表

 我们在linqPad的query标签里把Language 选择为c# Expression ,把Connection 选择数据MyDataDemo 就是我们上边建好的数据库如图

先看一下Left Join

我们在面版里输入最基本的Linq表达式 点执行或者F5

from stu in Students
join cla in Classes
on stu.Class_Id equals cla.Class_Id
into MyJoin
from grp in MyJoin.DefaultIfEmpty()
select new {ClassId=grp.Class_Id,Class_Name=grp.Class_Name,st_Name =stu.St_Name}

看一下linqPad给我们显示的结果
sql结果 是判断我们的Linq是不是正确的

看它是left outer join(left join 是Left outer join 和简写) 证明我们是正确的

SELECT [t1].[class_Id] AS [ClassId], [t1].[class_Name] AS [Class_Name], [t0].[st_Name]
FROM [Student] AS [t0]
LEFT OUTER JOIN [Classes] AS [t1] ON [t0].[class_Id] = [t1].[class_Id]

最强的是它还给我们生成lambda表达式

复制代码
Students
   .GroupJoin (
      Classes, 
      stu => stu.Class_Id, 
      cla => cla.Class_Id, 
      (stu, MyJoin) => 
         new  
         {
            stu = stu, 
            MyJoin = MyJoin
         }
   )
   .SelectMany (
      temp0 => temp0.MyJoin.DefaultIfEmpty (), 
      (temp0, grp) => 
         new  
         {
            ClassId = grp.Class_Id, 
            Class_Name = grp.Class_Name, 
            st_Name = temp0.stu.St_Name
         }
   )
复制代码

再看一下inner join

//inner join 
from stu in Students
join cla in Classes
on stu.Class_Id equals cla.Class_Id
select new {ClassId=cla.Class_Id,Class_Name=cla.Class_Name,st_Name =stu.St_Name}

看一下sql结果我们是不是正确的

SELECT [t1].[class_Id] AS [ClassId], [t1].[class_Name] AS [Class_Name], [t0].[st_Name]
FROM [Student] AS [t0]
INNER JOIN [Classes] AS [t1] ON [t0].[class_Id] = [t1].[class_Id]

正确
再看一下lambda表达式

复制代码
Students
   .Join (
      Classes, 
      stu => stu.Class_Id, 
      cla => cla.Class_Id, 
      (stu, cla) => 
         new  
         {
            ClassId = cla.Class_Id, 
            Class_Name = cla.Class_Name, 
            st_Name = stu.St_Name
         }
   )
复制代码

就讲到这里大家可以多学习一下这个工具

 

转载于:https://www.cnblogs.com/ajunForNet/p/4368448.html

相关文章:

  • Cacti监控Tomcatserver实现过程
  • C++ 多继承与虚基类
  • Set集合
  • Solr4.7从数据库导数据
  • 【转】 Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
  • hdu 2335 Containers
  • Druid Indexing 服务
  • iOS7中弹簧式列表的制作
  • python实现虚拟茶话会
  • IE6|IE7中li底部3px间距BUG
  • 移动前端开发之viewport的深入理解
  • 效率篇——AppleScript入门2
  • C# 利用socekt做到http监听,怎么样才能做到高性能
  • hadoop-2.2.0多个队列资源分配
  • 【安卓开发】Android系统中Parcelable和Serializable的区别
  • [译]如何构建服务器端web组件,为何要构建?
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Angular6错误 Service: No provider for Renderer2
  • Debian下无root权限使用Python访问Oracle
  • Docker入门(二) - Dockerfile
  • Docker下部署自己的LNMP工作环境
  • exports和module.exports
  • Javascript Math对象和Date对象常用方法详解
  • Leetcode 27 Remove Element
  • Markdown 语法简单说明
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring Cloud Feign的两种使用姿势
  • 从0实现一个tiny react(三)生命周期
  • 二维平面内的碰撞检测【一】
  • 服务器之间,相同帐号,实现免密钥登录
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ​​​​​​​​​​​​​​Γ函数
  • ​低代码平台的核心价值与优势
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (¥1011)-(一千零一拾一元整)输出
  • (2)STL算法之元素计数
  • (39)STM32——FLASH闪存
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (论文阅读40-45)图像描述1
  • .gitignore文件设置了忽略但不生效
  • .NetCore项目nginx发布
  • .NET大文件上传知识整理
  • .NET建议使用的大小写命名原则
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @RestControllerAdvice异常统一处理类失效原因
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ C++ ] 继承
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AIGC] Java 和 Kotlin 的区别
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强