linq 核心实现

查询操作符和扩展方法

查询操作符是linq的一个重要设施,linq使用扩展方式定义查询操作;

例如where 操作符:

初始linq表达式

Linq 核心实现
 1  public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, bool> predicate)
 2         {
 3             foreach (T item in source)
 4             {
 5                 if (predicate(item))
 6                 {
 7                     return (IEnumerable<T>)item;
 8                 }
 9             }
10             return null;
11         }
初始linq表达式
 1 class app
 2 {
 3       static void main()
 4       {
 5             string[] names={"Burke","Connor","Frank","Everett","Albert","George","Harris","David"};
 6 
 7             IEnumerable<string> query=from s in names
 8                                                        where s.Length==5
 9                                                        orderby s
10                                                        select s.ToUpper();
11 
12 
13               foreach(string item in query)
14               {
15                      Console.WriteLine(item);
16                }
17 
18       }
19 }
lambda表达式,类似如下委托
普通的方式来调用扩展方法
1 IEnumerable<string> query=Enumerable.Where(names,s=>s.Length<6);
C#允许使用这个方法来调用扩展方法
1 IEnumerable<string> query=names.Where(s=>s.Length>6);

 

posted @ 2012-06-20 01:04  石 磊  阅读(356)  评论(0编辑  收藏  举报