ASP.NET EF 使用LinqPad 快速学习Linq

使用LinqPad这个工具可以很快学习并掌握linq

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

linqPad4百度云下载(for .NET Framework4.0/4.5):链接:http://pan.baidu.com/s/1gflmRDp  密码:3n3f

linqPad5百度云下载(for .NET Framework 4.6):链接:http://pan.baidu.com/s/1dE5Z0VB  密码:qpgc

LINQPad is not just for LINQ queries, but any C#/F#/VB expression, statement block or program. Put an end to those hundreds of Visual Studio Console projects cluttering your source folder and join the revolution of LINQPad scripters and incremental developers.

Reference your own assemblies and NuGet packages. Prototype your ideas in LINQPad and then paste working code into Visual Studio. Or call your scripts directly from the command-line.

Experience LINQPad’s rich output formatting, optional debugger and autocompletion, and the magic of dynamic development and instant feedback!

LINQPad 并非只为 LINQ 查询,但任何 C# /F #/VB 表达式、 语句块或程序。结束这些数百个视觉工作室控制台项目塞满您的源文件夹和参加革命的 LINQPad 脚本编写者和增量的开发人员。

引用你自己的程序集和 NuGet 程序包。原型的你的想法在 LINQPad,然后粘贴工作代码到 Visual Studio。或直接从命令行调用您的脚本。

体验 LINQPad 的丰富的输出格式、 可选的调试器和自动完成和神奇的动态发展和即时反馈 !

先在数据库创建一个数据库MyFirstEF 和CustomerInfo和OrderInfo两张表

create database MyFirstEF
on primary
(
    name=‘MyFirstEF.mdf‘,
    --修改为自己电脑上SQL DB路径
    filename=‘E:\ProgramMSSQLServerDB\MyFirstEF.mdf‘,
    size=5mb,
    maxsize=100mb,
    filegrowth=10%
)
log on
(
    name=‘MyFirstEF_log.ldf‘,
    --修改为自己电脑上SQL DB路径
    filename=‘E:\ProgramMSSQLServerDB\MyFirstEF_log.ldf‘,
    size=2mb,
    maxsize=100mb,
    filegrowth=5mb
)
go

use MyFirstEF
go

create table CustomerInfo
(
    id int identity(1,1) primary key,
    customerName nvarchar(100) not null,
    customerDate datetime
)
go

create table OrderInfo
(
  id int identity(1,1) primary key,
  orderName nvarchar(100),
  customerId int
)
go

insert into CustomerInfo
select ‘aa‘,GETDATE() union all
select ‘bb‘,GETDATE() union all
select ‘cc‘,GETDATE() union all
select ‘dd‘,GETDATE()
go

insert into OrderInfo
select ‘bike1‘,2 union all
select ‘bike2‘,2 union all
select ‘car1‘,3 union all
select ‘car2‘,3 union all
select ‘chezi1‘,4 union all
select ‘chezi2‘,4 union all
select ‘test1‘,5 union all
select ‘test2‘,5
go

select * from CustomerInfo
go

select * from OrderInfo
go

--create SQL

安装完毕linqPad之后,打开软件 --Add Connection-->Build data context automatically(Default(LINQ to SQL))

我们在linqPad的query标签里把Language 选择为c# Expression ,把Connection 选择数据MyFirstEF

1:Linq left join(left join 是Left outer join 简写)

在面板中输入Linq,点击运行或者直接按F5【注意CustomerInfo/OrderInfo及字段 都需要按照EF中的格式写(不能按照数据库格式)】

from c in CustomerInfo
join o in OrderInfo
on c.Id equals o.CustomerId
into MyLeftJoin
from tt in MyLeftJoin.DefaultIfEmpty()
select new
{
    cname=c.CustomerName,
    //这里主要第二个集合有可能为空。需要判断
    //oname=tt==null?"":tt.OrderName
    oname=tt.OrderName
}

对应SQL为:

SELECT [t0].[customerName] AS [cname], [t1].[orderName] AS [oname]
FROM [CustomerInfo] AS [t0]
LEFT OUTER JOIN [OrderInfo] AS [t1] ON ([t0].[id]) = [t1].[customerId]

对应lambda表达式为:

CustomerInfo
   .GroupJoin (
      OrderInfo,
      c => (Int32?)(c.Id),
      o => o.CustomerId,
      (c, MyLeftJoin) =>
         new
         {
            c = c,
            MyLeftJoin = MyLeftJoin
         }
   )
   .SelectMany (
      temp0 => temp0.MyLeftJoin.DefaultIfEmpty (),
      (temp0, tt) =>
         new
         {
            cname = temp0.c.CustomerName,
            oname = tt.OrderName
         }
   )

2:Linq right join(right join 是Right outer join 简写)[最后生成SQL还是left join]

在面板中输入Linq,点击运行或者直接按F5

from o in OrderInfo
join c in CustomerInfo
on o.CustomerId equals c.Id
into MyRightJoin
from tt in MyRightJoin.DefaultIfEmpty()
select new
{
    //这里集合有可能为空。需要判断
       //cname=tt==null?"":tt.CustomerName,
    cname=tt.CustomerName,
    oname=o.OrderName
}

对应SQL为:

SELECT [t1].[customerName] AS [cname], [t0].[orderName] AS [oname]
FROM [OrderInfo] AS [t0]
LEFT OUTER JOIN [CustomerInfo] AS [t1] ON [t0].[customerId] = ([t1].[id])

对应lambda表达式为:

OrderInfo
   .GroupJoin (
      CustomerInfo,
      o => o.CustomerId,
      c => (Int32?)(c.Id),
      (o, MyRightJoin) =>
         new
         {
            o = o,
            MyRightJoin = MyRightJoin
         }
   )
   .SelectMany (
      temp0 => temp0.MyRightJoin.DefaultIfEmpty (),
      (temp0, tt) =>
         new
         {
            cname = tt.CustomerName,
            oname = temp0.o.OrderName
         }
   )

3:Linq inner join

在面板中输入Linq,点击运行或者直接按F5

from c in CustomerInfo
join o in OrderInfo
on c.Id equals o.CustomerId
select new
{
    cname=c.CustomerName,
    oname=o.OrderName
}

对应SQL为:

SELECT [t0].[customerName] AS [cname], [t1].[orderName] AS [oname]
FROM [CustomerInfo] AS [t0]
INNER JOIN [OrderInfo] AS [t1] ON ([t0].[id]) = [t1].[customerId]

对应lambda表达式为:

CustomerInfo
   .Join (
      OrderInfo,
      c => (Int32?)(c.Id),
      o => o.CustomerId,
      (c, o) =>
         new
         {
            cname = c.CustomerName,
            oname = o.OrderName
         }
   )

暂时就到这里,其他的参考官方文档。

参考链接:

ASP.NET MVC EF直接更新数据(不需查询):http://www.cnblogs.com/Dr-Hao/p/5255630.html

ASP.NET EF(LINQ/Lambda查询):http://www.cnblogs.com/Dr-Hao/p/5356928.html

时间: 2024-10-29 03:06:47

ASP.NET EF 使用LinqPad 快速学习Linq的相关文章

linqPad快速学习LINQ(含视频)

在这里我向大家推荐的一个具是LinqPad有了这个工具并熟练使用就可以很快学习并掌握linq 安装步骤: 使用LINQPad可以很方便的调试linq以及lambda表达式.其中自带了linq以及F#简单入门教程,LINQPad不管你喜不喜欢,反正我喜欢了,呵呵.LINQPad很精简,只有一个exe文件,可以从http://www.linqpad.net下载到.不扯淡了,简单介绍下这个工具,展示下LINQPad的魅力,真的很不错. 先看下如何连接数据库,运行LINQPad按下图进行操作, 点击ne

LinqPad工具:帮你快速学习Linq

LinqPad工具:帮你快速学习Linq 参考: http://www.cnblogs.com/li-peng/p/3441729.html ★:linqPad下载地址:http://www.linqpad.net/: 一.基本操作 1.    第一步:连接数据库: 2. 进行具体的linq操作: 执行查询: 二.实战用法:Left Join和Inner Join 1. 首先建数据库: 代码: create database MyDataDemo go use MyDataDemo go dro

ASP.NET EF(LINQ/Lambda查询)

EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集 1 create database MyFirstEF 2 on primary 3 ( 4 name='MyFirstEF.mdf', 5 --修改为自己电脑上SQL DB路径 6 filename='E:\ProgramMSSQL

ASP.NET快速学习方案(.NET菜鸟的成长之路)

想要快速学习ASP.NET网站开发的朋友可以按照下面这个学习安排进度走.可以让你快速入门asp.net网站开发!但也局限于一般的文章类网站!如果想学习更多的技术可以跟着我的博客更新走!我也是一名.NET学习者!正在进行系统的学习!在学习的过程中我会把更多的学习心得以及学习资料分享给大家! 课表内容: 课程名 课时数 课程详情 html 4 1.HTML语言的语法及主体结构 2.HTML常用标签 3.绝对路径和相对路径 4.表单设计等等 div+css 10 1.CSS引入方式 2.CSS选择器

使用ASP.NET MVC+Entity Framework快速搭建博客系统

学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和分享. 首先,得确定需求,木有需求的话,那还搞个毛线呀!嗯--大致思考了一下,终于得出如下需求: 1.能自定义分类 2.能发文章 OK!就这样,先从简单的开始(其实是复杂的不会做),后面有需要再添加(希望水平能达到).功能确定了,那么改确定要做成什么样子的了.先和度娘商量一下先-- 终于在我的淫威之下,度娘交出了一个比较简洁的,源网站在这里(表示感谢),被小弟阉割了之后效果如下图: 接下来就开始编码了么?嗯

自主研发轻量级注入容器+asp.net ef

好久没有来写博文,最近工作比较忙,最近公司在做新系统,想应用一套注入容器,unity,autofac,spring.net.都是可以选择的,还有自己专门研发封装的"SpeedIoc轻量级容器',性能肯定是不用说. 所以就用SpeedIoc+asp.net ef测试了一套新架构.有人说EF性能太差,可是我个人是没有这样觉得.做一般的项目,EF还是可以的,只是首次启动的时候会慢一点. 其中应用的是ef其中之一的代码优先模式,包括自动生成数据库,数据库操层公共接口+实现,业务层公共接口+实现.Spee

Asp.Net EF Code First 简单入门

今天在上班期间花了点时间学习了一下微软的EntityFramework Code First技术,这篇文章只是简单的入门,不多废话,下面直入主题. 一.首先添加一个解决方案,接着添加一个web网站,DataAccess类库(用于数据访问),Model类库(实体层),结构如下: 二.安装EntityFramework.通过Nuget Package Manager进行安装(如果还没有安装Nuget的,可以通过tools-extension manager进行安装),在tools-Nuget Pac

SQL Server 2012笔记分享-46:如何快速学习T-SQL语句

对于初学者来说,T-SQL语句的编写一直是个难题,初学者还是习惯使用图形界面来做相关的SQL方面的维护工作.但是在一个稍微复杂大型的SQL场景中,如果我们能够快速的掌握和理解SQL语句的编写和使用,那么会使我们的运维工作达到事半功倍的效果. 其实对于SQL server 2012来说,本身就提供了很多途径来帮助初学者获取日常管理任务的对应T-SQL脚本.下面我们来举几个快速获取T-SQL脚本的例子. ================================================

第23篇 js快速学习知识

前面说了js的一些高级方面的基础知识,这些都是比较容易出错的和比较难理解的东西,除了这些之外其它的知识都比较简单了,基础学好了,扩展起来就是小意思.今天说说js方面可以快速学习和入门的知识. 1.闭包 对于闭包来说,很多人对它有误解,有的说的怎么怎么好,但是我觉得这个东西说的那么悬无非是忽悠人的,对于闭包我看到有一篇博客上面说的很好: (1)闭包是一种设计原则,它通过分析上下文,来简化用户的调用,让用户在不知晓的情况下,达到他的目的: (2)网上主流的对闭包剖析的文章实际上是和闭包原则反向而驰的