LinqToSQL2
扩展方法:
扩展方法是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的更多相关文章
随机推荐
- No Desktop License Servers available to provide a license
远程桌面连接失败,提示:“no Remote Desktop License Servers available to provide a license” 原因:没有remote desktop l ...
- 后盾网lavarel视频项目---Vue项目使用vue-awesome-swiper轮播插件
后盾网lavarel视频项目---Vue项目使用vue-awesome-swiper轮播插件 一.总结 一句话总结: vue中的插件的使用和js插件的使用一样的简单,只是vue插件的引入过程有些不同 ...
- mysql if--else
SQL之case when then用法 case具有两种格式.简单case函数和case搜索函数. --简单case函数 case sex when '1' then '男' when '2' th ...
- Oracle Database的基本概念
一个 Oracle 服务器:是一个关系数据库管理系统(RDBMS),它提供全面的, 近乎完整的信息管理由Oracle 实例和Oracle 数据库组成Oracle 数据库 和 Oracle 实例Orac ...
- 你真的理解Java中的try/catch/finally吗?
看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() { try { System.o ...
- 什么是APJ与使用Spring Data JPA 基于Hibernate
目录结构 首先在Maven项目中添加依赖包 <!-- https://mvnrepository.com/artifact/org.springframework.data/ spring-da ...
- salt收集windows服务器日志时间
定义收集时间区间: time.ps1 $a = get-date $b = $a.adddays(-) $c = $b.tostring('yyyy-MM-dd') $d = get-date -fo ...
- Kafka管理与监控——彻底删除topic
一.配置 server.properties 设置 delete.topic.enable=true 如果没有设置 delete.topic.enable=true,则调用kafka 的delete命 ...
- Java集合(7):散列与散列码
散列的价值在于速度.我们使用数组来保存键的信息,这个信息并不是键本身,而是通过键对象生成一个数字(散列码),作为数组下标.由于数组的容量是固定的,而散列容器的大小是可变的,所以不同的键可以产生相同的数 ...
- Java集合(4):未获支持的操作及UnsupportedOperationException
执行各种添加和移除的方法在Collection中都是可选操作的,这意味着实现类并不需要为这些方法提供实现.当我们调用这些方法时,将不会执行有意义的行为,而是通常抛出UnsupportedOperati ...