今天没有太多的言语,只有代码,扩展方法多得太多,不能一一列完,书中一些,看多了也就会使用了。

 //Enumerable.Range 返回起始到结束范围,是一个Enumrable<int>类型
//Range方法并不会真的构造含有适当数字的列表,它只是在恰当的时间生成那些数,"just in time"
var c0 = Enumerable.Range(, );
foreach (var e in c0)
{
Console.WriteLine(e);//打印1,2,3,4,5,6,7,8,9,10
} //Reverse(),反转列表
var c1 = c0.Reverse();
foreach (var e in c1)
{
Console.WriteLine(e);//打印10,9,8,7,6,5,4,3,2,1
} //where(),过滤
var c2 = c1.Where(x => x % == );//返回符合谓语条件的元素,返回类型为Enumrable<int>
foreach (var e in c2)
{
Console.WriteLine(e); //10,8,6,4,2
} Console.WriteLine("---------------------------------------------"); //使用链式操作,因为每个操作都是返回Enumrable<int>
c0.Reverse().Where(x => x % == ).ToList().ForEach(x => Console.WriteLine(x)); //select(),进行投影,返回自定义类型对象列表
string[] arrs = { "James", "John", "Michelle", "Amy", "Kim" }; //返回一个匿名类型列表,该匿名类型包含First和Last属性
var objs = arrs.Select(x => new { First = x.First(), Last = x.Last() });
foreach (var e in objs)
{
Console.WriteLine(e.First); //J,J,M,A,K
Console.WriteLine(e.Last); //s,n,e,y,m
} //选择以"J"开头的元素,将Y从首位移到未位
var yObjs = arrs.ToList().FindAll(x => x.StartsWith("J")).Select(x =>
{
var y = x.Remove(, );
return y + "J";
});
foreach (var e in yObjs)
{
Console.WriteLine(e); //amesJ,ohnJ
} //使用OrderBy进行排序,返回IOrderedEnumerable<string>
var orderArrs = arrs.OrderBy(x => x.First());
foreach (var e in orderArrs)
{
Console.WriteLine(e); //Amy,James,John,Kim,Michelle
} //ThenBy(),先使用OrderBy()以首字母排序,再以未位排序
var thenArrs = arrs.OrderBy(x => x.First()).ThenBy(x => x.Last());
foreach (var e in thenArrs)
{
Console.WriteLine(e); //Amy,John,James,Kim,Michelle
}

  请斧正。

19.C#逐一介绍IEnumerable和IEnumerable<T>中的扩展方法(10.3-10.5)的更多相关文章

  1. 21扩展IEnumerable<T>泛型接口自定义LINQ的扩展方法

    LINQ方法实际上是对IEnumerable<TSource>的扩展,如图:   本篇自定义一个MyWhere方法,达到与Where相同的效果.     使用LINQ自带的Where方法 ...

  2. IEnumerable 与 IEnumerable<T>

    转自:https://blog.csdn.net/qq_21419015/article/details/80495322 IEnumerable 和IEnumerable<T> 接口在 ...

  3. PHP删除数组中空值的方法介绍

    这篇文章主要介绍了PHP删除数组中空值的方法介绍,需要的朋友可以参考下 说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下: ...

  4. 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇

    最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...

  5. IEnumerable和IEnumerable<T>接口

    IEnumerable和IEnumerable<T>接口 IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach ...

  6. IEnumerable<T>与IQueryable<T>以及.net的扩展方法

    首先看看继承关系 public abstract class DbSet : DbQuery public abstract class DbQuery : IOrderedQueryable, IQ ...

  7. IEnumerable接口的扩展方法

    /// <summary>/// IEnumerable接口的扩展方法,支持它的实现类是List的情况/// </summary>using System.Collection ...

  8. IEnumerable中的 Any方法

    IEnumerable类中的 Any方法,表示集合中有任何一元素满足条件,返回就true , 该方法有两个重载 1. 不带任何参数,表示集合中有元素 2. 参入一个 Func<TSource, ...

  9. 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法

    比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>&g ...

随机推荐

  1. 将text 文件转为List

    Integer 类型 ArrayList<Integer> Mlist = new ArrayList<Integer>(); Scanner scM = new Scanne ...

  2. HADOOP cluster some issue for installation

    给namenode搭建了HA,然后根据网上的配置也配置了secondary namenode, 但是一直没有从日志中看到启动secondnary namenode,当然进程也没有. 找了很多资料,按照 ...

  3. 该怎么快速完成ZBrush中脸部的雕刻

    骨骼,是一门基础艺术,几百年来一直为伟大的艺术大师所研究,它曾经,也将一直是创作现实且可信角色的关键,提高骨骼知识更将大大提高雕刻技能. 若有疑问可直接访问:http://www.zbrushcn.c ...

  4. linux下安装+配置+卸载jdk

    一. 解压安装jdk在shell终端下进入jdk1.7.0_55.bin文件所在目录, 执行命令 ./jdk1.7.0_55.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes, ...

  5. zstu-3769 数回文子串

    思路:用manacher求出每个位置的半径,相加即可. 代码:[rad[i]/2]即i这个位置的回文半径,添加的'#'代表长度为偶数的串. #include<stdio.h> #inclu ...

  6. mongoVUE1.5.3 破解方法

    MongoVUE是个免费软件,但超过15天后功能受限.可以通过删除以下注册表项来解除限制: [HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-82 ...

  7. android中scrollTo和scrollBy的理解

    protected   int  mScrollX;    //该视图内容相当于视图起始坐标的偏移量   , X轴 方向 protected   int  mScrollY;    //该视图内容相当 ...

  8. Python自动化测试 (二) ConfigParser模块读写配置文件

    ConfigParser 是Python自带的模块, 用来读写配置文件, 用法及其简单. 直接上代码,不解释,不多说. 配置文件的格式是: []包含的叫section,    section 下有op ...

  9. JS案例之6——瀑布流布局(1)

    在实际的项目中,偶尔会用到一种布局——瀑布流布局.瀑布流布局的特点是,在多列布局时,可以保证内容区块在水平方向上不产生大的空隙,类似瀑布的效果.简单的说,在垂直列表里,内容区块是一个挨着一个的.当内容 ...

  10. JS 模板引擎之JST模板

    项目中有用到JST模板引擎,于是抽个时间出来,整理了下关于JST模板引擎的相关内容. 试想一个场景,当点击页面上列表的翻页按钮后,通过异步请求获得下一页的列表数据并在页面上显示出来.传统的JS做法是编 ...