• lambda-基于谓词筛选值序列


    此方法通过使用延迟执行实现。 即时返回值为一个对象,该对象存储执行操作所需的所有信息。 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

    在查询表达式语法中,where (Visual C#) 或 Where (Visual Basic) 子句转换为 Where<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) 的一个调用。

    结合例子看下效果:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace LambdaTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<int> list = new List<int>();
                list.AddRange(new int[] { 7, 6, 10, 1, 2, 3, 4, 5, 8 });
    
                Func<int, bool> fi = new Func<int, bool>(MoreThan5);
                IEnumerator<int> ie = list.Where<int>(fi).GetEnumerator();
    
                //效果与list.Where<int>(fi).GetEnumerator()一致
                //IEnumerator<int> ie = list.Where<int>(x => x > 5).GetEnumerator();
    
                //效果与list.Where<int>(fi).GetEnumerator()一致
                //IEnumerator<int> ie = list.Where(delegate(int i){return i > 5;}).GetEnumerator();
    
                while (ie.MoveNext())
                {
                    Console.WriteLine(ie.Current.ToString());
                }
    
                Console.ReadKey();
            }
    
            public static bool MoreThan5(int i)
            {
                return i > 5;
            }
        }
    }

    Func<T,TResult>泛型委托在此代码中的的参数int,返回值类型为bool。

  • 相关阅读:
    七种程序设计模式
    理清JavaScript正则表达式
    采用管道处理HTTP请求
    AngularJS之Service4
    Net Core-Razor
    中间件(Middleware)
    Redis集群明细文档(转)
    nginx 301跳转到带www域名方法rewrite(转)
    Redis启动多端口,运行多实例(转)
    web框架之Spring-MVC环境搭建(转)
  • 原文地址:https://www.cnblogs.com/chenh/p/10662058.html
Copyright © 2020-2023  润新知