• Lambda随笔


      刚刚开始学习lambda和linq,写一些笔记方便以后查阅

    Lambda实际上是一个匿名函数它包含表达式和语句,经常用于委托或表达式目录树类型。所有lambda都是用lambda运算符      =>,这个运算符叫“goesto”,这个符号其实就相当于sqlserver中的as,和linq中的IN,就是改名字,lambda左边是输出参数(也可能没有),右边是表达式,或语句块,lambda表达式返回右边表达式的结果。

    (input  paramenters) =>express   //这里只是改个名字 paramenters知识一个参数,一个输入参数可以不用加括号否则必须加括号,两个或多个输入参数可以用逗号隔开

    例如:(X,Y) => x == y //此处用逗号将输入参数隔开

    通常lambda表达式参数是可以变的,由编译器自动指定它的具体类型,但有时编译器也无法指定他的编译类型,这时我们就可以指定它的编译类型,即在参数之前添加数据类型

    例如:(int x,string y) =>y.length>x

    当lambda表达式没有输入参数时,要用空()代替

    例如:()  =>amethod() //可以看出此处amethod()是一个方法,这个方法返回值就是lambda表达式的结果。

    由于lambda表达式是匿名函数,它可以赋值到一个委托,而在IEnumerable<T>(接口,多用于过滤)很多都通过函数,委托来实现自定义的运算,条件等操作,所以lambda在linq中被广泛使用。

    常用的实例:

    using System;
    using System.Linq;
    
    namespace ConsoleApplication3
    {
        class Program
        {
             static void Main(string[] args)
            {
                int[] intary = { 1,  2, 3, 4, 5, 6, 7, 8, 89, 10 };
                //查询所有能被2整除的元素
                var  query1 = intary.Where(num => num % 2 == 0);
                 Console.WriteLine("Query1:");
                foreach (var item in  query1)
                {
                    Console.WriteLine("{0}",  item);
                }
    
                //查询所有值大于3被索引的元素
                var query2 = intary.Where((num,  index) => num > index * 3);
                 Console.WriteLine("Query2:");
                foreach (var item in  query2)
                {
                    Console.WriteLine("{0}",  item);
                }
            }
        }
    }

    query1显示 // 246810
    query2显示//1 81

    using System;
    using System.Linq;
    
    namespace ConsoleApplication3
    {
        class Program
        {
             static void Main(string[] args)
            {
                int[] intary = { 1,  2, 3, 4, 5, 6, 7, 8, 89, 10 };
                 //对所有元素按照%10进行升序排列,这是默认的排序方式
                var query1 = intary.OrderBy(val  => val % 10 );
                Console.WriteLine("Query1:");
                 foreach (var item in query1)
                {
                     Console.WriteLine("{0}", item);//输出query1
                }
    
                //对所有元素按照%10进行降序排列
                var query2 =  intary.OrderByDescending(val => val % 10);
                 Console.WriteLine("Query2:");
                foreach (var item in  query2)
                {
                    Console.WriteLine("{0}",  item);
                }
            }
        }
    }
    

     显示结构

    query1:10 1 2 3 4 5 6 7 8 89

    query2:89 8 7 6 5 4 3 2 1  10

    using System;
    using System.Linq;
    using System.Collections.Generic;
    
    namespace ConsoleApplication3
    {
        class Program
        {
             static void Main(string[] args)
            {
                int[] intary = { 1,  2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40 };
                 //取intAry中前3个元素
                var query1 = intary.Take(3);
                 Console.WriteLine("Query1");
                foreach (var item in  query1)
                {
                    Console.WriteLine("{0}",  item);
                }
    
                //取intAry中小于5的元素
                var query2 = intary.TakeWhile(num  => num < 5);
                Console.WriteLine("Query2");
                 foreach (var item in query2)
                {
                     Console.WriteLine("{0}", item);
                }
            }
         }
    }
    

     显示结果

    query1:1 2 3

    query2: 1 2 3 4

    • Min():求最小值
    • Max():求最大值
    • Sum():求和
    • Average():求平均值
  • 相关阅读:
    C/C++中0xcccccccc...
    函数指针定义
    Visual C++的DLL
    RGB
    链接指示:extern "C"
    for_each用法
    漫画 | 夜深了,程序员的电脑却没关,发生了这样的故事…
    漫画 | 小公司卧薪尝胆三年,意外拿到美团offer
    Java 可变参数
    使用程序往Neo4j导入CSV报错
  • 原文地址:https://www.cnblogs.com/zhaogaoshuai/p/4362708.html
Copyright © 2020-2023  润新知