扩展方法:

扩展方法是C#3.0的新特性,可以通过为已知类型添加新方法来到到扩展类型的目的,同时不需对此类型做任何改动。

重点记住的是,定义为静态方法的扩展方法只能在通过using指令显示地将名称空间导入到应用程序代码中后才能被调用。

LINQ包含最常见的扩展方法,也就是所说的标准查询操作符。标准查询操作符扩展了IEnumerable<T>和IQueryable两种类型。

代码中需要使用实例方法来调用扩展方法,然后编译器产生的中间语言(IL)会把代码转换成为对静态方法的调用。

如果一定要使用扩展方法,牢记下面几点:

1.如果定义的扩展方法同在该类型中已经存在的方法具有相同的名称,那么此扩展方法将永远不会调用。(方法不要重名)。

2.扩展方法仅在命名空间的层次上才能被引入并得以使用。

代码奉上(结合上一篇)

public static class MyExtensions
{
public static bool IsValidEmail(this string email)
{
Regex exp = new Regex(@"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$");
return exp.IsMatch(email);
}
}

DataContext context = new DataContext(connectionString);
Table<Contack> contacts = context.GetTable<Contack>();
var query = from s in contacts.AsEnumerable()
select new { s.EmailAddress };
foreach (var item in query)
{
if (item.EmailAddress.IsValidEmail())//这里调用了一下上面写的扩展方法
{
System.Console.WriteLine(item.EmailAddress);//这里就是筛选后的email
}

}

LinqToSQL2的更多相关文章

随机推荐

  1. ReSharper “Cannot resolve symbol” even when project builds

    ReSharper “Cannot resolve symbol” even when project builds   This worked for me (VS2012u4, R# 7.1.3) ...

  2. kotlin array

    (1)Kotlin语言使用Array表示数组. (2)[] 可以用于访问数组的元素, [] 被进行了操作符的重载,调用的是 Array 类的 setter 和 getter 方法 2.创建数组 (1) ...

  3. 2.JSON.stringify()Object

    JSON.stringify() JSON 通常用于与服务端交换数据. 在向服务器发送数据时一般是字符串. 我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符 ...

  4. pytorch-googleNet

    googleNet网络结构 输入网络: 由4个分支网络构成 第一分支: 由1x1的卷积构成 第二分支: 由1x1的卷积,3x3的卷积构成 第三分支: 由1x1的卷积, 5x5的卷积构成 第四分支: 由 ...

  5. Android跨进程通信Messenger

    一.概述 我们可以在客户端发送一个Message给服务端,在服务端的handler中会接收到客户端的消息,然后进行对应的处理,处理完成后,再将结果等数据封装成Message,发送给客户端,客户端的ha ...

  6. ViedoUtil获取视频的缩略图

    package com.jcf.utilsdemo; import android.graphics.Bitmap; import android.media.ThumbnailUtils; publ ...

  7. 配置 admin 页面

    创建 blog 的管理后台 首先是 blog 这个 App,其中定义了 3个 Model,分别是 Category.Post 和 Tag.先创建 admin 页面,其代码需要写到 blog/admin ...

  8. kafka入门学习---1 启动kakfa

    1.查看kafka生产者产生的数据 kafka-console-consumer.sh --zookeeper hadoop-:,hadoop-:,hadoop-: -topic kafkademo ...

  9. 分布式存储ceph部署(2)

    一.部署准备: 准备5台机器(linux系统为centos7.6版本),当然也可以至少3台机器并充当部署节点和客户端,可以与ceph节点共用:     1台部署节点(配一块硬盘,运行ceph-depo ...

  10. delphi treeview的子节点图标?

    代码实现不同的子节点图标效果. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...