NET基础课--对象的筛选和排序(NET之美)
1.数据量不大的时候取出数据缓存于服务器,然后排序,筛选等基于缓存进行以提高效率。
排序或筛选的方法是使用集合类型提供的,如List<T>.sort() List<T>.Findall()
2.筛选方法: List<T>.FindAll(Predicate<T> match)
讲解:Predicate<T>封装筛选的规则,它的位置是在参数类型上,能个定义成这样的类型的必然是委托。
它的定义:public delegate bool Predicate<T>(T obj)
使用举例:假设现有集合 list<order>,T即order,那么你的筛选方法的参数就是order类型变量。
筛选方法的可能原型就是: public bool MatchRule(order item);
筛选就意味着有外部条件,对order来说,年 月 日 国家 供应商等等都是。 那如何将筛选方法和条件进行整合呢?
定义一个类。构造函数中的参数就是这些条件。然 后用order中的属性来和参数进行比较。
书的作者把此类定义为泛型类,MatchRule定义为泛型方法,此泛型类要求类型实现一个接口,接口中有一属性Date,
类型为datetime,目的是在泛型MatchRule方法中可以写如下代码:
public bool MatchRule(T item)
{
if (year!=0 && year!=item.Date.Year)
return false;
}
3.排序:使用list<T>.sort方法。要求T实现IComparable<T>接口来提供默认排序。
此处举例:Order来实现这个接口。
public int CompareTo(order other)
{
//说明:其实类实现这个接口 把比较交给了属性客户ID,也就是string类型的比较
// 基础类型几乎都实现了IComparable接口,直接调用它们类型的比较即可
return this.CustomerId.CompareTo(other.CustomerId)
}
高级排序:
多个列组合及升序降序等要求。建议实现ICompare<T>接口。传递两个同类型对象及比较规则来排序。例子可以参考msdn。
NET基础课--对象的筛选和排序(NET之美)的更多相关文章
- drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页
复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...
- 【转载】使用Pandas对数据进行筛选和排序
使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...
- PourOver – 快速筛选和排序大的数据集合
PourOver 是一个用于对大数据集合进行快速过滤的 JavaScript 库.它可以在60fps下运行,允许您构建数据研究应用和档案,即不必等待一个数据库调用来呈现查询结果. PourOver 基 ...
- java实现两个不同list对象合并后并排序
工作上遇到一个要求两个不同list对象合并后并排序1.问题描述从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序.2.思路从数据库中查询到的数据放到各自list中,先遍历两 ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
来源:http://www.cnblogs.com/eagle1986/archive/2011/12/06/2278531.html 1:比较和排序的概念 比较:两个实体类之间按>,=,< ...
- iOS--自定义相册---对象数组按照时间戳排序
将对象按照时间戳排序,这里典型的一个例子是登录账户的排序:本地客户端可能保存了多个账户信息,在登录窗口用户可以选择已经登陆过的账户直接登录,现在的需求是要时刻让最近登陆过的账户排在前面,对于每个账户, ...
- jquery实现对象数组 筛选出每条记录中的特定属性字段 及根据某个属性值筛选出指定的元素
jquery实现对象数组 筛选出每条记录中的特定属性字段 直接上图: 源码: /** * 对后端返回的数据,筛选出符合报表的列项,多余的列项去除 */ function filterParams(da ...
- array排序(按数组中对象的属性进行排序)
使用array.sort()对数组中对象的属性进行排序 <template> <div> <a @click="sortArray()">降序& ...
随机推荐
- IO中手机旋转事件的传递
UIApplication -> delegate -> widnow -> rootViewController
- CPU使用率和Load Average的关系
看了几篇博客总结的区别,自己终于明白了含义,在这里将理解总结一下: 对于定义和解释,感觉淘测试上的更容易理解: 引用如下: CPU使用率: 一段时间内CPU的使用状况,从这个指标可以看出某一段时间内 ...
- Sqlserver统计语句
--查看被缓存的查询计划 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED st.text AS [SQL] , cp.cacheobjtype , c ...
- 解决Android AVD启动报错问题
好不容易从ADT Bundle转为Android Studio的开发环境,一路荆棘,现在又遇到了模拟器的问题,本来直接用真机调试程序会更快些,但是为了模拟多种系统不得不开启AVD. 废话不说,问题和解 ...
- ASP.Net MVC与WebForm的区别
- QTP描述性编程中往WebEdit控件输入文字问题
在网上查找到许多相关的描述性编程的案例,自己就想动手一试,于是在专家视图中输入如下代码: systemUtil.Run "http://www.baidu.com" wait(15 ...
- VC防止程序被多次运行 互斥体方法
BOOL CXXXApp::InitInstance() //函数内添加代码 HANDLE hMutex=CreateMutex(NULL,TRUE,"test"); // 用于检 ...
- 简单的批量读取外部insert文并插入DB
package com.tongxiang.item.base.dao; import java.io.BufferedReader; import java.io.File; import java ...
- C/C++中的sizeof
代码: #include <iostream> #include <string> using namespace std; int main(){ char s1[]=&qu ...
- 引用 exit、return、_exit、_Exit这几个函数的区别
引用 exit.return._exit._Exit这几个函数的区别 一.exit函数和return函数的主要区别是: exit用于在程序运行的过程中随时结束程序,其参数是返回给OS的.也可以这么讲: ...