LinQ查询基础(二)LinQ查询方法(含Lambda表达式)

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()差集

猜你喜欢

转载自blog.csdn.net/hebizhi1997/article/details/80195897
今日推荐