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);