本文将介绍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<TSource> SkipWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{if (source == null) throw Error.ArgumentNull("source");if (predicate == null) throw Error.ArgumentNull("predicate");return SkipWhileIterator<TSource>(source, predicate);
}private static IEnumerable<TSource> SkipWhileIterator<TSource>(IEnumerable<TSource> source, Func<TSource, bool> 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。

Linq中的Where与SkipWhile相关推荐

  1. 用日志记录LINQ中的所有增删改的SQL语句的方法

    我们知道LINQ中的增删改都要调用SubmitChanges方法,我们记录所有SQL的方式就是重写(override)DataContext中的SubmitChanges方法,为了避免每次修改dbml ...

  2. LINQ中ForEach方法的使用

    标签: linq 2016-06-25 12:47 409人阅读 评论(0) 收藏 举报分类: LINQ(5) 我の原创(113) 版权声明:本文为博主原创文章,未经博主允许不得转载.LINQ中For ...

  3. Linq中的group by多表多字段,Sum求和

    Linq中的group by多表多字段,Sum求和 //Line to Sql 写法var data = (from a in Itemsgroup a by new { a.GroupId, a.I ...

  4. C#8.0: 在 LINQ 中支持异步的 IAsyncEnumerableT接口

    C# 8.0中,提供了一种新的IAsyncEnumerable<T>接口,在对集合进行迭代时,支持异步操作.比如在读取文本中的多行字符串时,如果读取每行字符串的时候使用同步方法,那么会导致 ...

  5. Linq中string转int的方法

    Linq中string转int的方法 在做批量删除时,需把一串id值所对应的数据删除,调试出现问题: Linq语句中如果使用ToString()进行类型转换,编译时不会报错,但执行时会出现如下错误: ...

  6. 转载Linq中GroupBy方法的使用总结

    Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...

  7. linq中let关键字学习

    linq中let关键字就是对子查询的一个别名,let子句用于在查询中添加一个新的局部变量,使其在后面的查询中可见. linq中let关键字实例 1.传统下的子查询与LET关键字的区别 C# 代码    ...

  8. linq中给字段添加别名

    linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中public class Modeltest{string id;public str ...

  9. LINQ中的Lambda表达式

    Lambda Expressions in LINQ 在第12章,我提到可以用lambda表达式定义内联的委托定义.在如下表达式中: customer => customer.FirstName ...

最新文章

  1. html动态加载js方法,如何通过JavaScript动态加载js
  2. AI伪装目标检测:让变色龙现出原形!
  3. mysql每秒支持多少并发_如何设计一个高并发系统?
  4. CSS上下左右居中的几种方法
  5. 怎么安装python3-如何装python3
  6. 【报错笔记】程序报错:Cause: java.sql.SQLException: Invalid value for getInt() - ‘4ab72edc-c02f-423f-ae9e-18c30
  7. Java中的垃圾回收
  8. 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno...
  9. 181030每日一句
  10. 软件缺陷分析方法:ODC
  11. 提供可用的BT5更新源,亲测可用
  12. 2016(第三届)智能家居世界大会
  13. 自学JQuery Mobile的几个例子
  14. 配置计算机能不能关机,详细教你电脑自动关机怎么设置
  15. Gartner点将分布式文件存储,浪潮存储缘何一鸣惊人?
  16. Verilog语言、语法
  17. Python实现BP神经网络ANN单隐层回归模型项目实战
  18. Mysql5.7 You can't specify target table 'table' for update in FROM clause
  19. 功能测试——抓包工具(fiddler)
  20. 【mysql进阶-彩蛋篇】深入理解顺序io和随机io(全网最详细篇)

热门文章

  1. 【直播】回放与PPT下载!深度学习如何用于摄影图像的处理?
  2. 【杂谈】三人行必有AI,你会在其一吗?
  3. Linux下安装Jboss
  4. android官方架构room,Android 官方架构组件介绍之 Room(翻译)
  5. python排序链表快速排序算法_八大排序之快速排序算法-python实现
  6. 产业为主谋定共享运行-农业大健康·万祥军:特色化小镇时代
  7. 纯css用图片代替checkbox和radio,无js实现方法
  8. sql server创建新用户名登录以及为表添加角色和权限的多种方法
  9. ajax原理及其优缺点
  10. Unity3D去掉全屏时的屏幕黑边