用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
         }
   )

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

 

时间: 2024-10-23 20:02:46

用linqPad帮助你快速学习LINQ的相关文章

学习LINQ工具:LINQPad

LINQPad支持C# 3.0 和 Framework 3.5的全部功能: LINQ to SQL LINQ to Objects LINQ to XML LINQPad 也是一个很好的学习LINQ的工具,包含<C# 3.0 in a Nutshell>一书中200个示例,可以使用LINQPad感受LINQ的超酷功能和函数编程. LINQPad 是完全免费的,无需安装,下载之后直接可以运行,只有2.12 MB大小.LINQPad 需要先安装.NET Framework 3.5,支持 SQL E

如何快速上手LINQ to XML

在我们的程序中,我们经常需要将一些系统的数据.信息保存在文件中,而不是保存在数据库中,在.NET中,我通常都是选择将这些系统的数据.信息保存在XML中. 操作XML的技术有很多种: 1)DOM(Document Object Model,文档对象模型),它为XML文档提供了一个标准的解析. 2)XPath和XSLT,它们提供了查询和格式化XML的功能. 3).NET框架中提供了一些对XML操作的类(在System.XML命名空间下). 4)LINQ to XML. 在我看来有了LINQ to X

石小龙:新手如何快速学习竞价赚钱

操作竞价依靠的是自己的实战经验,而不是靠嘴巴吹出来的.在春节之前我在A5上发表了一篇文章<分析站长赔钱的四大原因>结果被各大网站进行转载上万次.很多人就加我的QQ,说龙哥我能不能跟你付费学习竞价,说实话以前没有想过带徒弟或者培训别人的. 因为我自己操作竞价赚钱,并不代表别人也能通过竞价赚到钱.后面有一个郑州的学员硬要跟我学,然后就带了一个学员,我当时想,如果他一个月时间没有赚到钱,就把钱退给他.结果跟我学习的第三天就出单了,只花了8元的广告费.后面更让我对我这套竞价技术自信,于是开始接着了带了

五个方面总结快速学习SEO的捷径

自从我A5站长网发表了新网站如何快速赚钱以后,很多站长加我为好友,向我请教如何做网站推广;如何快速地学会网站SEO推广,以及快速学习SEO的捷径.现在我以过来人的身份说说我学习SEO的心得体会.若是那里不对请高手们指点. 本人从2009年下半年开始接触网站优化,买了很多关于网站优化.推广.SEO方面的书籍,发现好多书籍上老是讲理论知识,专业术语的让大家看的一头雾水,我通过用刻苦研究,发现了网站SEO不像好多人想像的那么复杂难学,我觉得我们只要会开发网站就能很好地学会网站SEO.为了大家能快速地学

新手快速学习JavaScript免费教程资源汇总

  这篇文章主要介绍了新手快速学习JavaScript免费教程资源汇总,都是非常不错的学习站点,有需要的小伙伴可以参考下. "JavaScript"的名头相信大家肯定是耳熟能详,但只有一小部分人群了解它的使用与应用程序构建方式.这"一小部分"人指的当然是技术过硬的有为青年.网络程序员以及IT专业人员.但对于一位新手或者说外行人而言,"JavaScript"只不过是复杂计算机编程学科当中的另一个不知所云的术语. 那么,JavaScript到底是什么

什么参考书能快速学习css和javascript

问题描述 什么参考书能快速学习css和javascript 什么参考书能快速学习css和javascript,能快速上手的,最好有jquery的 解决方案 jquery是居于js的,上手很简单,要熟练就不易和,还有一些常碰到的问题都是靠积累来的 JavaScript权威指南应该是学js比较好的资料了. css常用的没几个属性,随便找一本来看就了解了. 你要是有js基础,学jquery基本没难度..所以了解js是很有必要的,不要直接上手jquery 解决方案二: 下几个视频看看就哦了 解决方案三:

阿里巴巴Java开发手册快速学习

Java作为一门名副其实的工业级语言,语法友好,学习简单,大规模的应用给代码质量的管控带来了困难,特别是团队开发中,开发过程中的规范会直接影响最终项目的稳定性. 善医者"未有形而除之",提高工程健壮性最好的方式是在代码出现问题之前就排除掉,不给Bug出现的机会.一份好的开发规范就可以起到这样的作用,大大减少产品上线后的问题.  <阿里巴巴Java开发手册>是阿里巴巴的内部编码规范,阿里官方的Java代码规范标准, 手册以Java应用开发为维度,分为编程规约.异常日志规约.M

15个快速学习苹果Swift编程语言的入门教程

要说今年最火的编程语言是什么.那就非Swift莫属了.当然最主要还是市场炒的比较热,加上官方Swift教程<The Swift Programming Language>在北航的大三学生发起在github上进行协同翻译获得了很高的人气,短短几天时间内<Swift中文版>第一版就发布.这真是不火不行了. Swift是苹果公司在WWDC2014上发布的全新开发语言.从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与O

快速学习AngularJs HTTP响应拦截器_AngularJS

任何时候,如果我们想要为请求添加全局功能,例如身份认证.错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段. angularJs通过拦截器提供了一个从全局层面进行处理的途径. 四种拦截器 实现 request 方法拦截请求 request: function(config) { // do something on request success return config || $q.when(config); } 该方法会在 $http 发送请求后台之前执行,因