惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Palo Alto Networks Blog
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
Schneier on Security
Engineering at Meta
Engineering at Meta
I
InfoQ
L
LangChain Blog
Cyberwarzone
Cyberwarzone
T
Tenable Blog
WordPress大学
WordPress大学
P
Privacy & Cybersecurity Law Blog
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Last Watchdog
The Last Watchdog
Last Week in AI
Last Week in AI
Cloudbric
Cloudbric
S
SegmentFault 最新的问题
爱范儿
爱范儿
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
AI
AI
T
Tor Project blog
I
Intezer
T
Threatpost
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
N
News and Events Feed by Topic
Latest news
Latest news
S
Security Affairs
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog RSS Feed
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
S
Securelist

博客园 - greater

Matlab 7.0不断重启问题解决方法 安装Matlab过程中遇到拒绝访问怎么办? NUnit图解(一) [翻译]Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition 第二十四章 LINQ API编程(三) [翻译]Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition 第二十四章 LINQ API编程(二) [翻译]Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition 第二十四章 LINQ API编程(一) 迷人舞步 难译的英文单词 Linq 之Expression Tree再思考 VS2008代码段快捷方式小记 Linq To SQL分页失败后引发的思考 Linq之查询非泛型集合 函数式编程的浅议 Linq操作符之筛选特定位置的元素 Linq与斐波那契数列共舞 Linq的那些事——从Linq扩展方法回顾C#语言基础 Linq To Object实例之过滤字符集 Linq to DataSet 之Access查询 从101 LINQ Samples开始
Linq之C#3.0语言扩展
greater · 2008-06-05 · via 博客园 - greater

为了让Linq的查询语法更接近于C#和VB.NET, C# 3.0和VB.NET 9.0基于的模板、匿名方法和迭代器都是LINQ的重要组成部分,其中包括了以下的重要特性:
1.隐藏类型的本地变量
     C# 3.0提供了一个新的关键子var,这样程序员就可以不需要明确的定义一个本地变量,而是由编译器根据表达式来初始化该变量。比如: var name="Linq";通过该项特性,不再需要重复本地变量的类型,编译器会自动的推动类型,同时支持强类型。而且可以省去在foreach循环中定义迭代器类型

2.对象初始化程序 
    该特性让我们能够在对象定义的时候就给相应的字段和属性赋值.例如:

class Person
    {
        ......
        public string Name { get; set; }
        public int Age { get; set; }
        public string Nation { get; set; }
        ......
    }
    通过该特性就可以在一句声明语句中初始化该变量
    var linq = new Person { Name = "Linq", Age = "2", Nation = "USA" };
    对于集合也是一样:
    ......
    var linqs = new List<Person>[]{
                new Person{Name="Linq to SQL",Age=1,Nation="USA"},
                new Person{Name="Linq to XML",Age=2,Nation="UK"},
                new Person{Name="Linq to DataSet",Age=3,Nation="GR"}
            };
    ......
    就类似于用Add方法添加对象。但是要注意必须是实现了IEnumerable接口和提供了Add方法的类.
3.Lambda表达式 
    linq            =>         linq.Age == 2
    (输入参数)   (操作符)   (表达式或是声明模块)
    在没有定义参数类型的情况下,输入参数为隐藏类型。当然可以定义具体类型,比如(Person linq)

4.扩展方法 
   其实最简单的实现就是在第一个参数前加上this关键字。因为this关键字指示编译器把该方法作为扩展方法对待。但是扩展方法必须是声明在非模板静态类。

5.匿名类
    其实匿名类只是没有类型名称而已,而实际的类型则由编译器在创建时确定.例如:
  var linq=new{"SQL to Object",4,"CN"};
    该特性的好处是在快速返回简单的临时结果,有利于开发。但是也有它的局限性在里面。主要是不能够利用强类型的方式进行类的操作,同时不能用作方法的返回值(除非该方法的返回值是Object类型)。还有就是在C#中匿名类是不可变的,也就是一旦创建就不能改变当中的属性值。