19.C#逐一介绍IEnumerable和IEnumerable<T>中的扩展方法(10.3-10.5)
2015-01-12 23:03
671 查看
今天没有太多的言语,只有代码,扩展方法多得太多,不能一一列完,书中一些,看多了也就会使用了。
请斧正。
//Enumerable.Range 返回起始到结束范围,是一个Enumrable<int>类型 //Range方法并不会真的构造含有适当数字的列表,它只是在恰当的时间生成那些数,"just in time" var c0 = Enumerable.Range(1, 10); 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 % 2 == 0);//返回符合谓语条件的元素,返回类型为Enumrable<int> foreach (var e in c2) { Console.WriteLine(e); //10,8,6,4,2 } Console.WriteLine("---------------------------------------------"); //使用链式操作,因为每个操作都是返回Enumrable<int> c0.Reverse().Where(x => x % 2 == 0).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(0, 1); 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 }
请斧正。
相关文章推荐
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- c# 扩展方法奇思妙用基础:Dictionary<TKey, TValue> 扩展
- c# 扩展方法奇思妙用高级篇三:Enumerable.Cast<T> 应用
- 深入理解 c# 第一章 使用扩展方法对 List<Product> 排序
- (原创)利用扩展方法,给 IEnumerable<T> 增加一个生成 Html 的 CheckBox 标签的方法,不用 C# 中的反射技术
- 用Java简单实现C#的参数为Action<T> Function<T,boolean>扩展方法
- c# 扩展方法奇思妙用高级篇三:Enumerable.Cast<T> 应用
- 工作总结 for 另类写法 循环加时间 集合合并 也是用的 static class Enumerable (IEnumerable<T>的扩展方法) (IEnumerable<T> 的 工具类) (所有集合 数组都实现IEnumerable<T>)
- NET3.5中的扩展方法,DEMO直接通过IEnumerable<T>来自定义调用过滤方法
- 扩展IEnumerable<T> ForEach()方法
- 扩展方法IEnumerable<T>转换为IList<SelectListItem> ,提供@Html.DropDownList使用
- c#扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展
- 扩展IEnumerable<T> ForEach()方法
- 用python模仿c#的List<>一组list筛选扩展方法
- c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展
- 近期收集一些基于IEnumerable<T>扩展方法,它给我们带了很多便利,有时的确是实用的。其中有Alternate,Append,Prepend,Distinct,Contains。具体怎么用呢
- c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展
- c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展
- (原创)利用扩展方法,给 IEnumerable<T> 增加一个生成 Html 的 select 标签的方法,不用 C# 中的反射技术
- 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇