ASP.NET EF 使用LinqPad 快速学习Linq
2018-01-30 16:18
726 查看
ASP.NET EF 使用LinqPad 快速学习Linq
使用LinqPad这个工具可以很快学习并掌握linq[Language Integrated Query]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 的丰富的输出格式、 可选的调试器和自动完成和神奇的动态发展和即时反馈 !
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
安装完毕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
相关文章推荐
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- ASP.NET EF 使用LinqPad 快速学习Linq
- 学习 :ASP.NET中使用LINQ
- [Transfer]ASP.NETV2.0快速入门、视频在线教程、个人网站、电子商务、宠物店等的使用
- 在Visual Studio Orcas和ASP.NET中使用LINQ (第一部分)的视频
- [ASP.NET学习笔记之二]数据集和数据库的同步-DataAdapter的使用
- asp.net 2.0中使用OWC组件学习小结
- asp.net 2.0中使用OWC组件学习小结
- asp.net 2.0中使用OWC组件学习小结(Chart)
- asp.net 2.0中使用OWC组件学习小结
- ASP.NET StartKit 学习和使用的PPT
- ASP.NET学习:DataList的使用
- [ASP.NET学习笔记之四]数据集的使用方法和技巧
- ASP.NET基础知识(本文章来自于互联网,感谢原作者的辛勤劳动,摘抄在此仅作为学习使用!)
- [ASP.NET学习笔记之二十]ASP_NET 2.0 中web part使用指南
- Asp.net 2.0中快速建立并使用资源文件
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 6 : 以编程方式使用 ASP.NET 母版页
- “ASP.Net快速入门”学习笔记
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- 使用DreamWeaverMX快速开发ASP.NET Web应用