publicstaticIEnumerable
返回的结果是:
kelly
belly
shelly
kiti
lili
操作符:OrderBy
描述:允许输入序列根据一个keySelector方法进行升序排序,并返回一个排序后的结果:IOrderedEnumerable
原型:2种
原型一:
publicstaticIOrderedEnumerable
string[]dogs={"kelly","belly","shelly"};string[]cats={"kiti","lili"};varpets=dogs.Concat(cats).OrderBy(item=>item);foreach(varpetinpets){Console.WriteLine(pet);}
需要注意的是,OrderBy后返回的是一个已经排序的结果:IOrderedEnumerable
因为这样会破坏原有的OrderBy的排序,如果我们需要再次针对其他的key进行排序,可以调用ThenBy,稍后会提到。
原型二:
publicstaticIOrderedEnumerable
原型二和原型一很类似,只是多提供了一个IComparer的参数,允许我们传入自己的排序算法。这样子的话,TKey就不一定要是想IComparer接口了。
我们还是来看个例子:
我们有一个Student类:
publicclassStudent{publicstringName{get;set;}publicList
我们希望根据Student的Scores的和来做一个降序排序,因此,我们另外建一个类来实现IComparer:
publicclassSortStudentScore:IComparer
这样,我们的查询可以写成:
//定义数据源List
我们的输出结果就是:
Student:TinaTotalScore:461Student:TerryTotalScore:436Student:LeonTotalScore:431Student:LindaTotalScore:421Student:EchoTotalScore:399
操作符:OrderByDescending
描述:与OrderBy操作符类似,只是排序方式是按照降序来排序的。
原型:与OrderBy一样,支持2种原型
具体例子可以参照OrderBy的,不再赘述。
操作符:ThenBy
描述:将一个已经排序后的序列,根据新的key进行再排序。主要,与大多数LINQ操作不一样的地方是,ThenBy(以及后面要介绍的ThenByDescending)的输入序列都必须是实现了
IOrderedEnumerable
原型:2种,跟OrderBy一样
为了说明这点,我们举个例子:
为了说明这个例子,我们让两个学生同名,并且总分也一样,用Id来区别他们,以下是输出结果:
UsingOrderByonly2.TinaTotalScore:4611.LeonTotalScore:4364.LeonTotalScore:4363.LindaTotalScore:4215.EchoTotalScore:399
AfteraddThenBy2.TinaTotalScore:4611.LeonTotalScore:4364.LeonTotalScore:4363.LindaTotalScore:4215.EchoTotalScore:399
我们发现Id1和Id4经过ThenBy后,并没有调整顺序。对于像List.Sort
操作符:Reverse
描述:Reverse很简单,就是将序列逆序一下
原型:
publicstaticIEnumerable
看个简单的例子吧:
int[]nums=newint[]{0,1,2,3,4,5};varevenNums=nums.Reverse();foreach(varevenNuminevenNums){Console.WriteLine(evenNum);}
输出的结果为:
543210
ToBeContinue…
参考:《Pro.LINQ.Language.Integrated.Query.in.Csharp.2010》