2017.10.12 简单的验证和LINQ中TakeWhile&SkipWhile

分享人:王炳钧


1. 简单的验证

应用场景:若需要在页面解锁某一段航班,点击解锁按钮时客户端js检验当前航班输入数据是否合法,若合法则进行数据库操作,若不合法,则停止。

  • 常用ajax

  • 响应服务器的方法,在该button的onclick方法中校验是否合法,若返回true,则调用后台处理函数。若返回false,则不执行后台方法。

image.png

如果左边return false 作为验证 右边则不执行。


2. LINQ中TakeWhile&SkipWhile

image.png

在用TakeWhile,SkipWhile前,先看一看常用的Take和Skip:

public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);

Take将枚举出source中的前count个元素,返回给客户端.
Skip 则恰好相反,将跳过source中的前count个元素,枚举其余元素

TakeWhile 和 SkipWhile:

数据源

static List<Customer> customers = new List<Customer> {
new Customer { CustomerID=1,Name="woody1"},
new Customer { CustomerID=2,Name="woody2"},
new Customer { CustomerID=3,Name="woody3"},
new Customer { CustomerID=4,Name="woody1"}
};

在这个数据源的基础上,进行如下操作:

var cs1 = customers.TakeWhile(c => c.Name == "woody1");
var cs2 = customers.TakeWhile(c => c.Name == "woody2");
var cs3 = customers.SkipWhile(c => c.Name == "woody1");
var cs4 = customers.SkipWhile(c => c.Name == "woody2");

问题:cs1--cs4这四个IEnumerable<Customer>变量中都保存着些什么元素?

正确答案:

  cs1 :woody1(CustomerID=1)
  cs2 : 没有任何元素 
  cs3 :woody2 , woody3 , woody1(CustomerID=4)
  cs4 :woody1(CustomerID=1),woody2,woody3,woody1(CustomerID=4)

TakeWhile对数据源进行枚举,从第一个开始判断,若返回true,则将该元素返回给客户端,并且继续向下进行枚举。但是,一旦值返回false的话,枚举就此打住,忽略剩下的所有元素。

SkipWhile也对数据源进行枚举, 从第一个开始判断, 若返回true,则跳过该元素,继续进行枚举操作。但是,一旦值返回为false,则该元素以后的所有元素,都不会再进行判断,而全部显示。

应用场景:业务部门根据备降航班来导出备降航班前后航班信息。查询某天所有航班信息,若有备降航班,则将起飞时间早于该航班的航班数据作为一个文件导出,来获取多个表格。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,864评论 6 13
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,151评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,380评论 19 139
  • ​ 缺点: 1、场景创建后,暂时无法修改 2、场景的创建与用例的创建隔离 3、无法实现嵌套(类似jmeter的那种功能)
    许你一枝花阅读 1,235评论 0 0