文档章节

Enumerable类成员函数的参数的几种写法

IT周见智
 IT周见智
发布于 2015/06/05 17:17
字数 324
阅读 1
收藏 0
点赞 0
评论 0

      System.Linq.Enumerable类为我们提供了许多扩展方法,一般实现了IEnumerable<T>接口的类型都能被扩展,比如Enumerable类中定义了OrderBy方法,该方法用来根据某个键值对目标值序列排序,那么int[] 类型就能拥有OrderBy这个方法了。

      其中OrderBy方法有两个参数,一个为要扩展类型的对象:this IEnumerable<TSource> source;一个就是返回排序键值的委托:Func<TSource, TKey> keySelector。其中Func是一个TSource类型参数,返回TKey类型值的委托,需要说的是,该参数有多种写法:1、

1、直接用Lambda表达式:

1  int [] sets = { 1 , 3 , 6 , 4 , 3 , 8 , 7 };
2  var subset = sets.OrderBy(( int  a) => { return  a;});
3  foreach (var temp  in  subset)
4  {
5     console.write(temp);
6  }

 

2、用匿名方法:

1  int [] sets = { 1 , 3 , 6 , 4 , 3 , 8 , 7 };
2  var subset = sets.OrderBy( delegate ( int  a){ return  a;});
3  foreach (var temp  in  subset)
4  {
5     console.write(temp);
6  }

 

3、新建委托:

 1  int  key( int  a)
 2  {
 3      return  a;
 4  }
 5 
 6  int [] sets = { 1 , 3 , 6 , 4 , 3 , 8 , 7 };
 7  var subset = sets.OrderBy( new  Func < int , int > (key));
 8  foreach (var temp  in  subset)
 9  {
10      console.write(temp);
11  }

 

任何需要新建委托(new  MyDelegate(……))的地方,一般都能用匿名方法(delegate(参数){……}),也一般能用lambda表达式((参数)=>{函数体})。

© 著作权归作者所有

共有 人打赏支持
IT周见智

IT周见智

粉丝 10
博文 61
码字总数 185891
作品 0
西青
C++线程入口函数的几种方式

假设线程入口函数和创建线程函数原型如下: 线程入口函数原型: typedef void (FNTHREAD)(void pParam); 其中:pParam传递给线程的参数。 并假定所有的函数、方法都编译成stdcall调用约定。 ...

娱乐你我 ⋅ 2014/04/01 ⋅ 2

泛型集合的静态扩展方法

C# 中的泛型集合提供了很多基于 Enumerable 的静态扩展方法,例如 Find, OrderBy , Average ,Distinct 等,在使用基础数据类型的集合时,可以直接调用这些方法,但如果是自定义类型就应当根...

夏至如沫 ⋅ 2014/12/04 ⋅ 0

C++中const用法总结

. const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。...

Jian-Yong ⋅ 2012/06/16 ⋅ 1

C++11的初始化语法

首先我要强调,C++中struct和class唯一的区别是,前者的成员默认公有,后者成员默认私有. 在C++03中,结构体/类的初始化方式只有来自C语言的一种写法: struct A{ }; A a{123,456}; //a.x=12...

王子亭 ⋅ 2012/12/23 ⋅ 4

JS之preventExtensions、seal和freeze

preventExtensions 默认情况下,所有对象都是可扩展的。在调用之后,将不能再往对象中添加属性(严格模式报错,非严格模式静默失败),对已有属性没有影响 seal 密封属性;密封属性不可扩展;而...

⋅ 01/08 ⋅ 0

C++ 实现简单的闭包

这里的闭包指的是一个闭包类,这个闭包类使用一个通用的辅助接口函数(如 NewCallback)来生成。在生成的时候传入需要使用的函数指针以及这个函数将要使用到的参数,生成闭包工具类后再使用一...

兔之 ⋅ 2016/12/08 ⋅ 6

uLua中遇到的问题

1.C#调用lua函数参数为空的问题 在C#中调用以(:)定义的函数传参时,self被第一个参数覆盖,而obj将为空 MessagePanel = {}; function MessagePanel:Test1(obj)--lua调用正常,obj为传入参数...

乐逍遥jun ⋅ 2016/02/22 ⋅ 0

JS面向对象深度剖析

Javascript是一个类C的语言,他的面向对象的东西相对于C++/Java比较奇怪,但是其的确相当的强大,在 Todd 同学的“对象的消息模型”一文中我们已经可以看到一些端倪了。这两天有个同学总在问...

Qianduaner ⋅ 2013/07/10 ⋅ 0

Babel下的ES6兼容性与规范

ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问题,但大家仍很疑惑,使用ES6会有...

ouven ⋅ 2015/12/09 ⋅ 0

Javascript模块化编程(一):模块的写法

原作者:阮一峰 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。 网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等......开发者不...

Idiot_s_Sky ⋅ 2014/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 5分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 12分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 16分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 18分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 21分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 26分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 38分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 57分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部