LINQ基础
- 1. 入门
- 2. 运算符流语法
- 2.1 连续使用查询运算符
- 2.2 使用Lambda表达式
- 2.2.1 Lambda表达式及Func的方法签名
- 2.2.2 Lambda表达式和元素类型
- 2.2.3 自然排序
- 2.2.4 其他查询运算符
- 3 查询表达式
- 4 延迟执行
- 4.1 重复执行
- 4.2 捕获的变量
- 4.3 延迟加载的工作原理
- 4.4 查询语句的执行方式
- 5 子查询
- 6 LINQ构造方式
- 7 映射策略
- 8 解释性查询
- 9 LINQ to SQL 和 EF的区别
- 10 查询表达式的创建
- 委托、匿名方法、Lambda表达式
- 11 自定义一个运算符,了解原理
本篇文章所有内容均来源于书籍《果壳中的C#》,本博客用于复习知识、分享知识使用。
1. 入门
2. 运算符流语法
2.1 连续使用查询运算符
2.2 使用Lambda表达式
2.2.1 Lambda表达式及Func的方法签名
2.2.2 Lambda表达式和元素类型
2.2.3 自然排序
2.2.4 其他查询运算符
3 查询表达式
博主不使用该方式,书籍内的大多数知识直接忽略
4 延迟执行
4.1 重复执行
4.2 捕获的变量
4.3 延迟加载的工作原理
TODO
4.4 查询语句的执行方式
5 子查询
6 LINQ构造方式
7 映射策略
8 解释性查询
9 LINQ to SQL 和 EF的区别
10 查询表达式的创建
委托、匿名方法、Lambda表达式
委托:指向函数的类型(自定义,Action,Func)
匿名方法:没有方法名的方法(delegate)
lambda表达式:匿名方法可简化为lambda表达式,并且可以推断出类型
11 自定义一个运算符,了解原理
实现查找大于10的所有数
static void Main(string[] args){int[] nums = new int[] { 15,1,5,155,441,56};var res = nums.MyWhere(p => p > 20);foreach (int i in res) {Console.WriteLine(i);};//查找大于10的所有数nums.Where(t => t > 10).ToList().ForEach(Console.WriteLine);Console.ReadKey();}public static class MyLinq{public static IEnumerable<T> MyWhere<T>(this IEnumerable<T> t,Func<T,bool> action) {//List<T> list = new List<T>();foreach (var item in t) {if (action(item)){Console.WriteLine("MyWhere:"+item);//list.Add(item);yield return item;}}//return list;}}