博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lambda
阅读量:5322 次
发布时间:2019-06-14

本文共 2516 字,大约阅读时间需要 8 分钟。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace LinqDemo

{

   public  class ProcessData

    {

       public int id { get; set; }  

     

       public string Name { get; set; }

       public Int64 Memory { get; set; }

    }  

}

 

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml.Linq;

using System.Xml;

using System.Diagnostics;

 

namespace LinqDemo

{

    class Program

    {

        static void Main(string[] args)

        {

                   

        }

     

       public static void LambdaDemoGeneral()

        {

            var process = new List<ProcessData>();

            foreach(var pro in Process.GetProcesses())

            {

                if(pro.WorkingSet64>=20*1000*1000)

                {

                    process.Add(new ProcessData {id=pro.Id,Name=pro.ProcessName,Memory=pro.WorkingSet64});

                }

            }

            Array.ForEach(process.ToArray(), c => Console.Write("id为:" + c.id + "进程名为:" + c.Name + "进程大小为:" + c.Memory + "\n"));

        }

        public static bool Filter(Process process)

        {

            return process.WorkingSet64 >= 20 * 1000 * 1000;

        }

        public static void LambdaDemoDelegate(Predicate<Process> match)

        {

            var process = new List<ProcessData>();

            foreach (var pro in Process.GetProcesses())

            {

                if (match(pro))

                {

                    process.Add(new ProcessData { id = pro.Id, Name = pro.ProcessName, Memory = pro.WorkingSet64 });

                }

            }

            Array.ForEach(process.ToArray(),c=>Console.Write("id为:"+c.id+"进程名为:"+c.Name+"进程大小为:"+c.Memory+"\n"));

          

       

        }

       //委托的使用

        public static void DelegateDemo()

        {

            LambdaDemoDelegate(Filter);

        }

       //匿名委托的使用

        public static void  NoNameDelegateDemo()

       {

          LambdaDemoDelegate(delegate(Process process){return process.WorkingSet64>=20*1000*1000});

       }

        //lambda表达式的使用

        public static void LambdaDemo()

        {

            LambdaDemoDelegate(process=>process.WorkingSet64>=20*1000*1000);

        }

    }

}

测试结果: 

------ Test started: Assembly: LinqDemo.exe ------

id为:1804进程名为:explorer进程大小为:22355968

id为:3096进程名为:SoftMgrLite进程大小为:30908416
id为:432进程名为:sqlservr进程大小为:20783104
id为:1944进程名为:sqlservr进程大小为:50274304
id为:2228进程名为:TheWorld进程大小为:63655936
id为:2572进程名为:AcroRd32进程大小为:40710144
id为:500进程名为:wandoujia_helper进程大小为:57176064
id为:308进程名为:AcroRd32进程大小为:20774912
id为:2080进程名为:searchindexer进程大小为:20176896
id为:1100进程名为:svchost进程大小为:27500544
id为:5464进程名为:ProcessInvocation86进程大小为:28516352
id为:648进程名为:OrayRemoteService进程大小为:34111488
id为:3988进程名为:devenv进程大小为:124190720
id为:3868进程名为:TheWorld进程大小为:91607040
id为:5180进程名为:WebDev.WebServer进程大小为:62074880
id为:2772进程名为:QQ进程大小为:30638080
id为:5524进程名为:TheWorld进程大小为:43868160

1 passed, 0 failed, 0 skipped, took 0.75 seconds (Ad hoc).

 

以上几个实例,从当前进程中筛选出运行内存大于等于20MB的进程,使用了几种方法,一般方法,委托,匿名委托,lambda表达式。

 

转载于:https://www.cnblogs.com/flyaway100/p/3463022.html

你可能感兴趣的文章
解决 hibernate cannot define positional parameter after any named parameters have been defined
查看>>
CentOS7忘记root密码
查看>>
Servlet 单例多线程【转】
查看>>
洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找)
查看>>
Android POST GET请求
查看>>
linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制...
查看>>
【译著】Code First :使用Entity. Framework编程(1)
查看>>
缓冲区溢出利用——捕获eip的傻瓜式指南
查看>>
AutoMapper用法
查看>>
DirectShow 最简单的入门 -- 播放一段视频
查看>>
redis学习-散列表常用命令(hash)
查看>>
[BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛
查看>>
安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup
查看>>
所遇Oracle错误代码
查看>>
h5调用底层接口的一些知识
查看>>
vue2.0学习教程
查看>>
遗忘的知识数据库表查询
查看>>
c++ 接口
查看>>
Builder Pattern
查看>>
如何设计充值消费的数据表
查看>>