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

分享人:王炳钧


1. 简单的验证

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

  • 常用ajax

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

image.png

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


2. LINQ中TakeWhile&SkipWhile

2017.10.12 简单的验证和LINQ中TakeWhile&SkipWhile_第1张图片
image.png

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

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

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

TakeWhile 和 SkipWhile:

数据源

static List customers = new List {
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变量中都保存着些什么元素?

正确答案:

  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,则该元素以后的所有元素,都不会再进行判断,而全部显示。

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

你可能感兴趣的:(2017.10.12 简单的验证和LINQ中TakeWhile&SkipWhile)