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

 //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. 记一次查内存异常问题(续《记一次Web应用CPU偏高》)

    继上一次查应用的CPU飙高问题(http://www.cnblogs.com/hzmark/p/JVM_CPU.html)过去10天了.上次只是定位到了是一个第三方包占用了大量的CPU使用,但没有细致 ...

  2. CentOS 6.5安装MongoDB

    1.创建mongodb.repo文件在/etc/yum.repos.d/目录下创建文件mongodb.repo,它包含MongoDB仓库的配置信息,内容如下: [mongodb] name=Mongo ...

  3. 关于HADOOP HA 中DFSZKFC的理解

    [转自uc技术博客:http://tech.uc.cn/?p=252] FC是要和NN一一对应的,两个NN就要部署两个FC.它负责监控NN的状态,并及时的把状态信息写入ZK.它通过一个独立线程周期性的 ...

  4. Hive Word count

    --https://github.com/slimandslam/pig-hive-wordcount/blob/master/wordcount.hql DROP TABLE myinput; DR ...

  5. [转]设定version 更新js缓存

    http://zhenggm.iteye.com/blog/680600 遇到的问题:         在访问量比较大的系统中,我们需要将一些静态的文件在客户端缓存,以减少下载的流量,从而加快客户端访 ...

  6. 【CSS3】CSS3 滤镜实现

    作者:^_^肥仔John      来源:CSS3魔法堂:CSS3滤镜及Canvas.SVG和IE滤镜替代方案详解 IE特有的滤镜常常作为CSS3各种新特性的降级处理补充,而Adobe转向HTML5后 ...

  7. UVA 439 Knight Moves --DFS or BFS

    简单搜索,我这里用的是dfs,由于棋盘只有8x8这么大,于是想到dfs应该可以过,后来由于边界的问题,TLE了,改了边界才AC. 这道题的收获就是知道了有些时候dfs没有特定的边界的时候要自己设置一个 ...

  8. f2fs解析(四)f2fs的extent特性

    extent的意思是“程度”,但是我还是搞不清楚要如何把“程度”和我理解的extent联系到一起. 文件的偏移和page-cache的映射关系体现在address space 中的一颗基数树上:当基数 ...

  9. 调用Oracle存储过程并获取out参数值

    原文: http://tech.it168.com/oldarticle/2006-04-02/200604021512359.shtml http://www.cnblogs.com/m-cnblo ...

  10. Bolts-Android

    对Android客户端编程来说,有个明确的规则是不能在ui线程里面做耗时的操作.这样就要求网络请求.文件读写等等操作都要异步操作.而异步操作完成后,往往需要再更新ui界面.最直接的想法是回调,只要保证 ...