日期:2014-05-20 浏览次数:21088 次
void Main() { string[] names = { "abc", "a", "bcd","ab","bcde" }; IEnumerable<string> name = names.OrderBy(s=>s).SkipWhile(s => s.StartsWith("a")); foreach (var ss in name) { Console.WriteLine(ss); } }
------解决方案--------------------
//SkipWhile对数据源进行枚举,从第一个枚举得到的元素开始
//如果返回true,则跳过该元素,继续进行枚举操作.
//但是,如果一旦返回false,则该元素以后的所有元素,都不会再调用SkipWhile,
就拿你的例子来说吧,
string[] names = { "abc", "a", "bcd","ab","bcde" };
前两个元素满足条件,返回true,SkipWhile就会跳过它们,但是,到第三个元素时,返回false,就不会调用SkipWhile,意思就是程序将它后面的所有元素;
TakeWhile函数也是这样的原理
如何LZ想了解多一点,可以看下这里:
http://www.cnblogs.com/qfb620/archive/2008/03/21/1116014.html