Linq扩展方法简单分析

在向大家详细介绍LINQ之前,首先让大家了解下LINQ是什么,然后全面介绍Linq扩展方法。

LINQ使查询成为了.NET中头等的编程概念,被查询的数据可以是XML(LINQ to XML)、Databases(LINQ to SQL、LINQ to Dataset、LINQ to Entities)和对象(LINQ to Objects)。LINQ也是可扩展的,允许你建立自定义的LINQ数据提供者(比如:LINQ to Amazon、LINQ to NHibernate、LINQ to LDAP)。在这里我会讨论C#3.0中的一些新的语言特性和改进,正是它们使得LINQ变得如此强大~~

Linq扩展方法

Linq扩展方法可以使你来扩展一个已存在的类型,增加它的方法,而无需继承它或者重新编译。所以不像为对象写助手方法,Linq扩展方法可以直接是对象自己的一部分。

一个示例,假设我们想要验证一个string 是不是合法的Email地址,我们可以编写一个方法,输入为一个string 并且返回true 或者false 。现在,使用Linq扩展方法,我们可以如下这样做:

public static class MyExtensions {

publicstatic bool IsValidEmailAddress(this strings) {

Regex regex = new
Regex( @"^[w-.]+@([w-]+.)+[w-]{2,4}$");

return
regex.IsMatch(s);

}

}

我们定义了一个带有静态方法的静态类。注意,那个静态方法在参数类型string 前面有一个this 关键词,这会告诉编译器这个特殊的Linq扩展方法会增加给string 类型的对象。于是我们就可以在string 中调用这个成员方法:

using MyExtensions;
string email = Request.QueryString["email"];
if( email.IsValidEmailAddress() ) {
// ...
}

值得提出的是,LINQ就是使用了System.Linq 命名空间中的Linq扩展方法(比如where()、orderby()、select()、sum()、average()等等),而且它定义了标准查询操作符,可以用来查询关系数据库、XML和任何实现了IEnumerable<T> 接口的.NET对象。

时间: 2025-01-01 03:10:29

Linq扩展方法简单分析的相关文章

JS扩展方法实例分析_javascript技巧

本文实例讲述了JS扩展方法实现技巧.分享给大家供大家参考.具体分析如下: JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现.这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣. 下面给出一个例子: <head> <title>测试JS扩展方法</title> <script type="text/javascript"> // 合并多个空白为一个空白 Stri

JS扩展方法实例分析

 JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现.这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣. 下面给出一个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <head> <title>测试JS扩展方法</title> <script type="text/javascript"> // 合并多个空白为一个空

C#3.0扩展方法(Extension Methods)

今天早上在MSDN站点看到这样一篇文章: C# 3.0 LINQ 的演变及其对 C# 设计的影响 . 从这篇文章我们就可以明显的看到,C# 3.0 所新增的这些特性,可以认为都是为了LINQ 的发展,为了LINQ更易用,所创建的一些新特性,当然这些新特性也可以被非LINQ相关功能所使用.LINQ的发展,带动了C#3.0 这一系列新特性的产生. 回来说我们的话题,扩展方法,首先看一个最简单的代码例子: 扩展方法的定义,需要注意三个部分:1.静态类(私有公共都可以):2.静态方法(私有公共都可以):

Linq入门——什么是linq &amp;amp; 扩展方法

 一,什么是Linq                      linq(language integrated Query):语言集成查询:      linq包含如下:                 对对象的查询,对数据库的查询,对XML的查询.       那么,没有linq前我们是怎样查询的?             先看一个例子:             现在我们要查询大于50的数,:          在没有linq之前,我们的代码时这样的:                   

Swift使用LINQ操作数组/集合(附Swift的LINQ扩展、及替代方法)

一,什么是LINQ LINQ 是 Language Integrated Query(语言集成查询)的简称.它是微软在.NET 3.5中引入的重要功能.既然是微软推出的,那对应的编程言自然是c#和Visual Basic语言. 1,LINQ的作用 让我们可以使用相同API(类似SQL的语法来查询)操作不同的数据源.比如:SQL Server.Oracle.XML以及内存中的数据集合,当然开发人员也可以使用其提供的扩展框架添加更多的数据源. 2,LINQ的查询操作符 LINQ定义了大约40个查询操

为LINQ服务的C#新特性总结篇---扩展方法,匿名委托,lambda表达式,Action委托,Func委托,Linq中的order by,top和sum函数

Codeusing System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Diagnostics; namespace ConsoleApplication1{    static class Program    {        static void Main(string[] args)        {            //Predicate       

Linq之扩展方法

目录 写在前面 系列文章 扩展方法 总结 写在前面 上篇文章介绍了隐式类型,自动属性,初始化器,匿名类的相关概念,及通过反编译的方式查看了编译器帮我们做了那些事.本篇文章将介绍扩展方法的知识点,及如何定义,如何使用的相关内容. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 扩展方法 扩展方法使你能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法

两个简单的扩展方法:TrimPrefix和TrimSuffix

今天写程序频繁用到两中字符串操作:删除某个字符串指定的前缀和后缀.由于没有现成的方法可用,写了两个扩展方法:TrimPrefix和TrimSuffix. 1: namespace System 2: { 3: public static class StringExtensions 4: { 5: public static string TrimPrefix(this string sourceString, string prefix, bool ignoreCase = false) 6:

流氓软件ErrorSafe的简单分析清除方法与其他_病毒查杀

这里就简单描述ErrorSafe的分析和应对办法,目前,我这里只能找到两个版本,一个是1.0.22.4,另外一个是1.2.120.1,后者经升级应该是最新版本了,颠倒一下,先给出结论,并列举防范措施,最后是简单分析 结论和推广方式 1.从版本上来看,老版本的ErrorSafe还添加了服务等,而最新版本则是很简单的只添加自启动项,新版本更容易被清除 2.从程序上来看,该软件之所以被国际称为恶意软件,主要是指它的流氓推广方式及其恶劣,犯了众怒,才被人人喊打 由于该程序本身并无流氓特征,其流氓性主要体