zoukankan      html  css  js  c++  java
  • linqPad快速学习LINQ(含视频)

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

    安装步骤:

    使用LINQPad可以很方便的调试linq以及lambda表达式。其中自带了linq以及F#简单入门教程,LINQPad不管你喜不喜欢,反正我喜欢了,呵呵。LINQPad很精简,只有一个exe文件,可以从http://www.linqpad.net下载到。不扯淡了,简单介绍下这个工具,展示下LINQPad的魅力,真的很不错。

    先看下如何连接数据库,运行LINQPad按下图进行操作,

    点击next,弹出如下界面,

    点击OK后的界面如下,

    下面就可以对具体表进行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

     数据库里建两个表

     我们在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
             }
       )
    复制代码

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

    (上述图文来自:http://www.cnblogs.com/li-peng/p/3441729.html

    以下内容由【吕津】增加:

    PS:

    我是在学习Entity Framework4视频的时候,有讲师提到了LINQPad工具。

    http://v.youku.com/v_show/id_XMzA4MTQ0Mjk2.html

    对于初学者,通过学习LINQPad的"Samples"可以快速地掌握和上手LINQ.

  • 相关阅读:
    .net core3.1 使用log4日志
    windows 使用IIS 部署 .net core3.1
    EntityFramework 延时加载、事务、导航属性
    EntityFramework EF状态跟踪和各种查询
    EF查看SQL2种方式 和 映射
    Sql Server 逻辑文件 '' 不是数据库 '' 的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。
    async和await
    线程异常处理和取消和线程锁
    Task和TaskFactory
    thread:线程等待,回调
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/4378497.html
Copyright © 2011-2022 走看看