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<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相关推荐
- 用日志记录LINQ中的所有增删改的SQL语句的方法
我们知道LINQ中的增删改都要调用SubmitChanges方法,我们记录所有SQL的方式就是重写(override)DataContext中的SubmitChanges方法,为了避免每次修改dbml ...
- LINQ中ForEach方法的使用
标签: linq 2016-06-25 12:47 409人阅读 评论(0) 收藏 举报分类: LINQ(5) 我の原创(113) 版权声明:本文为博主原创文章,未经博主允许不得转载.LINQ中For ...
- Linq中的group by多表多字段,Sum求和
Linq中的group by多表多字段,Sum求和 //Line to Sql 写法var data = (from a in Itemsgroup a by new { a.GroupId, a.I ...
- C#8.0: 在 LINQ 中支持异步的 IAsyncEnumerableT接口
C# 8.0中,提供了一种新的IAsyncEnumerable<T>接口,在对集合进行迭代时,支持异步操作.比如在读取文本中的多行字符串时,如果读取每行字符串的时候使用同步方法,那么会导致 ...
- Linq中string转int的方法
Linq中string转int的方法 在做批量删除时,需把一串id值所对应的数据删除,调试出现问题: Linq语句中如果使用ToString()进行类型转换,编译时不会报错,但执行时会出现如下错误: ...
- 转载Linq中GroupBy方法的使用总结
Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...
- linq中let关键字学习
linq中let关键字就是对子查询的一个别名,let子句用于在查询中添加一个新的局部变量,使其在后面的查询中可见. linq中let关键字实例 1.传统下的子查询与LET关键字的区别 C# 代码 ...
- linq中给字段添加别名
linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中public class Modeltest{string id;public str ...
- LINQ中的Lambda表达式
Lambda Expressions in LINQ 在第12章,我提到可以用lambda表达式定义内联的委托定义.在如下表达式中: customer => customer.FirstName ...
最新文章
- html动态加载js方法,如何通过JavaScript动态加载js
- AI伪装目标检测:让变色龙现出原形!
- mysql每秒支持多少并发_如何设计一个高并发系统?
- CSS上下左右居中的几种方法
- 怎么安装python3-如何装python3
- 【报错笔记】程序报错:Cause: java.sql.SQLException: Invalid value for getInt() - ‘4ab72edc-c02f-423f-ae9e-18c30
- Java中的垃圾回收
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno...
- 181030每日一句
- 软件缺陷分析方法:ODC
- 提供可用的BT5更新源,亲测可用
- 2016(第三届)智能家居世界大会
- 自学JQuery Mobile的几个例子
- 配置计算机能不能关机,详细教你电脑自动关机怎么设置
- Gartner点将分布式文件存储,浪潮存储缘何一鸣惊人?
- Verilog语言、语法
- Python实现BP神经网络ANN单隐层回归模型项目实战
- Mysql5.7 You can't specify target table 'table' for update in FROM clause
- 功能测试——抓包工具(fiddler)
- 【mysql进阶-彩蛋篇】深入理解顺序io和随机io(全网最详细篇)