文档章节

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

IT周见智
 IT周见智
发布于 2015/06/05 17:17
字数 324
阅读 1
收藏 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++11的初始化语法

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

王子亭
2012/12/23
5.1K
4
JS之preventExtensions、seal和freeze

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

01/08
0
0
Vue源码阅读前必须知道javascript的基础内容

前言 vue目前是前端使用频率较高的一套前端mvvm框架之一,提供了数据的响应式、、等极为方便的功能及api,那么,vue到底是如何实现这些功能的呢?在探究vue源码之前,必须了解以下几点javas...

wqzwh
07/16
0
0
C++ 实现简单的闭包

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

兔之
2016/12/08
682
6
uLua中遇到的问题

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

乐逍遥jun
2016/02/22
12
0

没有更多内容

加载失败,请刷新页面

加载更多

Flask 开发填坑

插件的选择: flask-security 真的是个鸡肋啊。自带的页面,好丑。还不如用flask-login来做呢。

pearma
56分钟前
2
0
讲述下 :LVM逻辑卷管理遇到的问题

LVM学习逻辑卷管理创建逻辑卷遇到的问题 1 实验环境 系统 内核 发行版本 CentOS 2.6.32-754.2.1.el6.x86_64 CentOS release 6.10 (Final) 由于是最小化安装没有xfs命令,yum安装如下包支持此...

linuxprobe16
今天
1
0
day95-20180922-英语流利阅读-待学习

Hey Jude 半个世纪传唱不衰的背后故事 毛西 2018-09-22 1.今日导读 2004 年,The Beatles 被《滚石》杂志选为“历史上最伟大的 50 位流行音乐家的第一位”。这四名来自英国利物浦的男孩不仅对...

飞鱼说编程
今天
3
0
OSChina 周六乱弹 —— 放假前期焦虑症晚期

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Matteo的单曲《Panama》: 《Panama》- Matteo 手机党少年们想听歌,请使劲儿戳(这里) @新垣吉衣OSC :我发现只要去有小朋友...

小小编辑
今天
325
10
wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部