今天沒有太多的言語,只有代碼,擴展方法多得太多,不能一一列完,書中一些,看多了也就會使用了。
1 //Enumerable.Range 返回起始到結束范圍,是一個Enumrable<int>類型 2 //Range方法並不會真的構造含有適當數字的列表,它只是在恰當的時間生成那些數,"just in time" 3 var c0 = Enumerable.Range(1, 10); 4 foreach (var e in c0) 5 { 6 Console.WriteLine(e);//打印1,2,3,4,5,6,7,8,9,10 7 } 8 9 //Reverse(),反轉列表 10 var c1 = c0.Reverse(); 11 foreach (var e in c1) 12 { 13 Console.WriteLine(e);//打印10,9,8,7,6,5,4,3,2,1 14 } 15 16 //where(),過濾 17 var c2 = c1.Where(x => x % 2 == 0);//返回符合謂語條件的元素,返回類型為Enumrable<int> 18 foreach (var e in c2) 19 { 20 Console.WriteLine(e); //10,8,6,4,2 21 } 22 23 Console.WriteLine("---------------------------------------------"); 24 25 //使用鏈式操作,因為每個操作都是返回Enumrable<int> 26 c0.Reverse().Where(x => x % 2 == 0).ToList().ForEach(x => Console.WriteLine(x)); 27 28 //select(),進行投影,返回自定義類型對象列表 29 string[] arrs = { "James", "John", "Michelle", "Amy", "Kim" }; 30 31 //返回一個匿名類型列表,該匿名類型包含First和Last屬性 32 var objs = arrs.Select(x => new { First = x.First(), Last = x.Last() }); 33 foreach (var e in objs) 34 { 35 Console.WriteLine(e.First); //J,J,M,A,K 36 Console.WriteLine(e.Last); //s,n,e,y,m 37 } 38 39 //選擇以"J"開頭的元素,將Y從首位移到未位 40 var yObjs = arrs.ToList().FindAll(x => x.StartsWith("J")).Select(x => 41 { 42 var y = x.Remove(0, 1); 43 return y + "J"; 44 }); 45 foreach (var e in yObjs) 46 { 47 Console.WriteLine(e); //amesJ,ohnJ 48 } 49 50 //使用OrderBy進行排序,返回IOrderedEnumerable<string> 51 var orderArrs = arrs.OrderBy(x => x.First()); 52 foreach (var e in orderArrs) 53 { 54 Console.WriteLine(e); //Amy,James,John,Kim,Michelle 55 } 56 57 //ThenBy(),先使用OrderBy()以首字母排序,再以未位排序 58 var thenArrs = arrs.OrderBy(x => x.First()).ThenBy(x => x.Last()); 59 foreach (var e in thenArrs) 60 { 61 Console.WriteLine(e); //Amy,John,James,Kim,Michelle 62 }
請斧正。