LINQ学习笔记(一)—感受篇

原创 2007年09月24日 23:53:00
以前,由于同事的感染,ORM的一些开源框架小玩了一下,一直没有用到项目中,前天听说VS2008BETA2(微软一般是BETA2就到RTM,呵呵),想想是时候好好学学感受一下里面的LINQ.

 

感受微软的新东西,我习惯性的来到Scottgublog,果然一个系列已经有9篇之多了,还有一些视频,正合我意(其实很多中文webcast应该向国外的学习一下,人家总是短小精悍,难道说中文的就得罗嗦点,郁闷)

 

接着又看了MikeTaulty的视频,真是大呼过瘾啊,于是小玩了一把 J

 

在玩之前,先下一个小插件LINQ to SQL Debug Visualizer(LINQ的可视化调试工具),如果没有也没有关系,不过查看LINQ背后执行的真正SQL就麻烦点,使用SQL跟中器或者直接设断点,Scottgu那样打开记事本Ctrl+V,呵呵.

 

LINQ to SQL Debug Visualizer具体可参考一个兄弟的帖子:

http://www.cnblogs.com/xuhy-developer/archive/2007/08/11/852035.aspx

 

下面来做做MikeTaulty的例子,是一个控制台简单的程序:

 

Step 1.添加一个dbml的文件,命名为Northwind.dbml,下面是它的结构

 

(PS:记得在Scottgu的一篇文章中提到,为了区分表和这些实体之间的名字问题,使用LINQ设计器的时候,那些名字会自动去掉复数,但我的就没有,我想可能是使用的是中文的VS,所以这一特性被去掉了吧,毕竟有时有些是中文的表名也遇到过,呵呵,瞎猜的)

Step 2.建立简单的控制台程序,代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqTest1
...{
    
class Program
    
...{
        
static void Main(string[] args)
        
...{
            NorthwindDataContext ctx 
= new NorthwindDataContext("server=./SQLEXPRESS;database=northwind");
            var query 
= from o in ctx.Orders
                        
where o.Customers.City == "Berlin" && o.ShipCity == "Berlin"
                        select 
new
                        
...{
                            CustomerName 
= o.Customers.ContactTitle + " " + o.Customers.ContactName,
                            OrderNo 
= o.OrderID,
                            TotalValue 
= o.Order_Details.Sum(od => od.UnitPrice * od.Quantity)
                        }
;
            
foreach (var v in query)
            
...{
                Console.WriteLine(v);
            }

            Console.ReadLine();
        }


    }

}

 

(PS:这里连接数据库有个小插曲,由于我找不来sql2005Northwind,所以就把2000中附加到我的SQL2005 EXPRESS,结果测试的时候老报错误,跟着错误又设权限,又设链接方法什么的,最后还是没有搞定,最后还是老老实实的自己用脚本在SQL2005 EXPRESS中生成了一个,甚是纳闷 T_T)

 

运行结果:

 

实际生成的SQL:

SELECT ([t1].[ContactTitle] + ' '+ [t1].[ContactName] AS [value][t0].[OrderID], (

    
SELECT SUM([t2].[UnitPrice] * (CONVERT(Decimal(29,4),[t2].[Quantity])))

    
FROM [dbo].[Order Details] AS [t2]

    
WHERE [t2].[OrderID] = [t0].[OrderID]

    ) 
AS [value2]

FROM [dbo].[Orders] AS [t0]

LEFT OUTER JOIN [dbo].[Customers] AS [t1] ON [t1].[CustomerID] = [t0].[CustomerID]

WHERE ([t1].[City] = 'Berlin'AND ([t0].[ShipCity] = 'Berlin')

《鸟哥的Linux私房菜--基础学习篇》 读书笔记

############################################ 第20章 启动流程、模块管理与Loader 2015.04.11 ######################...
  • ustc_summer
  • ustc_summer
  • 2015年04月11日 17:59
  • 1261

云笔记使用的感受想法!(对有道云笔记、印象云笔记的比较与评价)

看到同事在使用云笔记,也下载了来试用一下,不过安装试用之后,就吧下载的几个都给删除了。说一下自己内心的感受和想法: 功能太多 下载了有道云笔记、印象笔记、云笔记。功能真的太多了,支持语音、...
  • default7
  • default7
  • 2014年08月23日 06:57
  • 29410

深度学习word2vec笔记之基础篇

深度学习word2vec笔记之基础篇
  • mytestmy
  • mytestmy
  • 2014年05月25日 16:00
  • 65825

C#学习笔记(八)—–LINQ查询创建策略

这篇文章是引用博客园的,这篇文章应该也是出自C# in a nutshell,但是翻译的比较好,容易理解。地址为:http://www.cnblogs.com/lifepoem/archive/201...
  • w343516704
  • w343516704
  • 2017年05月31日 16:10
  • 147

C#学习笔记(八)—–LINQ查询之延迟执行

LINQ查询之延迟执行在LINQ中,另一个很重要的特性就是延迟执行,也可以说是延迟加载。它是指查询操作并不是在查询运算符定义的时候执行,真正使用集合中的数据时才执行,例如遍历数据集合时调用MoveNe...
  • w343516704
  • w343516704
  • 2017年05月26日 17:52
  • 252

C#学习笔记(八)—–LINQ查询之子查询

子查询在linq中,所谓的子查询就是包含在另一个查询的Lambda表达式中的查询语句。下面这个示例中就是使用子查询对一组音乐家名字按姓氏排序:string[] musos = { "David Gil...
  • w343516704
  • w343516704
  • 2017年05月31日 15:53
  • 440

C#学习笔记(八)—–LINQ查询的基础知识(上)

由于都是手打的字,难免会出现错误,请大家指正,感激。比如下面出现的LINQ、LInq、LINq等都是指的一个东西:LINQLINQ查询 lINQ是Language Integrated Query的简...
  • w343516704
  • w343516704
  • 2017年05月26日 09:46
  • 223

linq to sql 语法 学习笔记

  • 2014年09月05日 18:14
  • 69KB
  • 下载

linq 实用学习笔记

  • 2013年06月09日 08:22
  • 6KB
  • 下载

linq to sql 学习笔记

  • 2013年12月09日 17:09
  • 97KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LINQ学习笔记(一)—感受篇
举报原因:
原因补充:

(最多只允许输入30个字)