Linq中的Where与SkipWhile - 11GX
首页 > Linq中的Where与SkipWhile

Linq中的Where与SkipWhile

      本文将介绍Linq中的Where与SkipWhile的用法,有时我们容易混淆它们。下面来看一个简单的UnitTest:

[TestMethod]
public void TestSkipWhileAndWhereLinq()
{//arrangestring[] names = { "Jalpesh", "Jayesh", "Tushar", "Tejas", "Sanjay", "Nijesh", "Jemit", "Jay" }; var skipWhileResult = names.SkipWhile(s => s.ToLower().StartsWith("j"));//assertvar expectArray=new string[] { "Tushar", "Tejas", "Sanjay", "Nijesh", "Jemit", "Jay" };CollectionAssert.AreEqual( expectArray, skipWhileResult.ToArray());var whereReuslt = names.Where(s => !s.ToLower().StartsWith("j"));//assertvar expectArray2 = new string[] { "Tushar", "Tejas", "Sanjay", "Nijesh" };CollectionAssert.AreEqual(expectArray2, whereReuslt.ToArray());
}



  SkipWhile只是匹配一开始满足条件的元素。上面的代码一看就明白。更加请参照MSDN

  SkipWhile是这样的实现的:

 

public static IEnumerable SkipWhile(this IEnumerable source, Funcbool> predicate)
{if (source == null) throw Error.ArgumentNull("source");if (predicate == null) throw Error.ArgumentNull("predicate");return SkipWhileIterator(source, predicate);
}private static IEnumerable SkipWhileIterator(IEnumerable source, Funcbool> predicate)
{bool iteratorVariable0 = false;foreach (TSource iteratorVariable1 in source){if (!iteratorVariable0 && !predicate(iteratorVariable1)) iteratorVariable0 = true;if (iteratorVariable0){yield return iteratorVariable1;}}
}

 

  希望对您开发有帮助。 



作者:Petter Liu

出处:http://www.cnblogs.com/wintersun/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

该文章也同时发布在我的独立博客中-Petter Liu Blog。

更多相关:

  • 本文翻译自Jon Skeet的系列博文“Edulinq”。 本篇原文地址: http://msmvps.com/blogs/jon_skeet/archive/2010/12/27/reimplementing-linq-to-objects-part-9-selectmany.aspx    我们接下来要实现的这个操作符是LIN...

  • Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。本系列学习计划有Blue同学作为发起人,主要以Open3D官方网站的教程为主进行翻译与实践的学习计划。点云PCL公众号作为免费的3D视觉,点云交流社区,期待有使用Op...

  • 2019独角兽企业重金招聘Python工程师标准>>> 找到includes/cls_template.php大约1101行/* 在头部加入版本信息 *///$source = preg_replace('//i', "