扩展方法:

扩展方法是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
}

}

最新文章

  1. Python正则表达式中的re.S
  2. Fiddler替换HTTP Request Host
  3. 面向对象Part3
  4. 《selenium2 Java 自动化测试实战(第二版)》 更新2016.5.3
  5. LINUX下NFS系统的安装配置
  6. Ubuntu 安装桌面且远程连接
  7. ios7隐藏系统底部导航
  8. Java实战之02Hibernate-07与效率性能相关配置
  9. Play on Words
  10. Android自定义属性、控件三步法
  11. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
  12. influxdb + Grafana可视化监控平台
  13. JavaScript对象类型判断注意点
  14. Android 开发 启动activity并且将前面activity全部清空
  15. Linux查看与挂载新磁盘
  16. hdu 1160 FatMouse&#39;s Speed (最长上升子序列+打印路径)
  17. CSS实现垂直居中的5种思路
  18. 【http协议】浅谈
  19. jQuery垂直滑动切换焦点图
  20. Problem A: 调用函数,计算分段函数的值

热门文章

  1. bind绑定服务的生命周期
  2. mvc导出数据到pdf
  3. flutter webview_flutter 设置cookies
  4. Elasticsearch安装配置问题
  5. Scala语法01 - 基础语法
  6. Win10上的媒体断开连接错误消息(找不到ip地址)
  7. MySQL时间相关操作
  8. 拷贝docker镜像到其他机器部署
  9. 打开svn时出现 R6034
  10. 两表拼接 pd.concat