2.1 Lambda表达式
Lambda表达式实际上是一种匿名函数,可以赋值到一个委托,而在IEnumerable<T>的方法中很多都通过函数委托来实现自定义的运算、条件等操作,所以Lambda表达式在LINQ中被广泛运用。
=> Lambda运算符 读作“goes to”
基本格式如下:
(input parameters) => expression
参数可以是0个或多个,当参数为一个的时候括弧可以省略
各个参数之间用“,”分隔
(x, y) => x==y;
() => Console.WriteLine("Hello World!");
当右边的表达式部分含有2个或以上表达式的时候,必须有“{“和”}”
当有“{“和”}”的时候,如果需要返回值,必须写return
(string x, int y) => { return y > x.Length};//返回一个布尔值
2.2 用Where()方法进行筛选
int[] arry = { 1, 2, 3, 5, 7, 9, 45, 12, 35, 62, 33, 44 }; //Where() 条件筛选 var query = arry.Where(val => val % 5 == 0); foreach (var v in query) Console.Write("{0} ", v); Console.WriteLine();
输出结果:
2.3
用OrderBy()方法进行排序
int[] arry = { 1, 2, 3, 5, 7, 9, 45, 12, 35, 62, 33, 44 }; //OrderBy() 排序 //默认增序 var query = arry.OrderBy(val => val % 10);//将原来的数按取余10之后的大小排序 foreach (var v in query) Console.Write("{0} ", v); Console.WriteLine(); //OrderByDescending() 降序 query = arry.OrderByDescending(val => val % 10);//将原来的数按取余10之后的大小排序 foreach (var v in query) Console.Write("{0} ", v);
输出结果为:
2.4 用Skip()、SkipWhile()跳过元素
int[] arry = { 1, 2, 3, 5, 7, 9, 45, 12, 35, 62, 33, 44 }; //Skip()、SkipWhile()跳过元素 //Skip(int n) 跳过前n个元素 var query1 = arry.Skip(3); foreach (var v in query) Console.Write("{0} ", v); Console.WriteLine(); //SkipWhile() 跳过符合()中条件的元素 var query = query1.SkipWhile(num => num < 10); foreach (var v in query) Console.Write("{0} ", v);
输出结果:
2.5 用 //Take()、TakeWhile()提取元素
int[] arry = { 1, 2, 3, 5, 7, 9, 45, 12, 35, 62, 33, 44 }; //Take()、TakeWhile()提取元素 //Take(int n) 提取前n个元素 var query = arry.Take(3); foreach (var v in query) Console.Write("{0} ", v); Console.WriteLine(); //TakeWhile() 提取符合()中条件的元素 query = arry.TakeWhile(num => num < 10); foreach (var v in query) Console.Write("{0} ", v);
输出结果:
2.6 运算操作 Max Min Average Sum
int[] arry = { 1, 2, 3, 5, 7, 9, 45, 12, 35, 62, 33, 44 }; //运算操作 Max Min Average Sum var max = arry.Max(); var min = arry.Min(); var ave = arry.Average(); var sum = arry.Sum(); Console.WriteLine("Max:{0} Min:{1} Average:{2} Sum:{3}", max, min, ave, sum); string[] arry1 = { "Hello", "Tanks", "Sex", "Fun", "Apple" }; var max1 = arry1.Max(); var min1 = arry1.Min(); Console.WriteLine("Max:{0} Min:{1} ", max1, min1);
字符串类型时 只能有Min 和Max 方法 以首字母排序
输出结果:
2.7 用Distinct() 删除重复元素
//Distinct() 删除重复元素 int[] arryy = { 1, 2, 1, 3, 6, 5, 7, 9, 5, 6, 4, 8, 5, 3 }; query = arryy.Distinct(); foreach (var v in query) Console.Write("{0} ", v); Console.WriteLine();
输出结果:
2.8 此外 Concat()连接两个集合 Union()并集 Intersect()交集 Except()差集