您的位置:首页 > 编程语言 > C#

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
}


  请斧正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐