zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    网络配置br0 brtcl
    vlan pvid vid access口 trunk口
    虚拟化设置
    debian配置网络
    ps -a,job,netstat,daemons
    windows用命令行查看硬件信息
    查看linux硬件信息
    ruby send respond_to
    打开Win7休眠模式和离开模式的方法
    vim手册
  • 原文地址:https://www.cnblogs.com/chenh/p/10662058.html
Copyright © 2011-2022 走看看