Query Syntax versus Method Syntax (第四章)

Query Syntax VS Method Syntax

这个就不翻译拉。应该是专门术语。查询语法 对 方法语法

这张文章大家应该看看Lambda语法。和扩展方法这个感念。其实Method Syntax就是lambad语法。lambda中用到了很多扩展方法这个东西。

这节涉及东西很多。我只打算说下这两个方法的区别,从表现形式方面最容易看了

Query Syntax 方法

IEnumerable<int> numQuery1 = 
    from num in numbers
    where num % 2 == 0
    select num;

就是前面经常看到这个写法

Method Syntax方法

IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0);
哈哈。大家看着好像很爽又觉的奇怪吧。
先看lambda语法
Where(num => num % 2 == 0)就是这个东西。我也不做细致讲讲。简单的 num % 2 ==0 和Query Systax中的where num % 2 == 0
是等价的,大家一看也就明白。num这个变量不用声明。直接使用了。就是返回值。=>这个操作符也不用深究相当于等于的意思
numbers.Where(num => num % 2 == 0);
这个where语法就是net3.0中大展伸手的扩展方法。where是系统已经定义。直接调用。大家注意看看扩展方法啊
 
那么Lamdba语法是怎么来的呢?
简单说又涉及到代理和匿名类。其实在编译期间lambda语法是被编译成代理匿名方法的 。where(delegate Mygele(x)....)。推荐大家看看webcast中
net3.0尖锐体验李建中讲的。很不错的。咱们不是搞研究的会用就ok拉。了解一下还是好的
 
好了Getting Started with LINQ in C# 这课程就到此为止了。虽然msdn还有一个是net3.0对linq的支持,其实没什么东西。
还有一个是waklthrought几个操作练习,有空单独再写。
 
里面可能有不少错误。欢迎一起讨论学习
 
 

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

原文地址:https://www.cnblogs.com/zjypp/p/2319486.html