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之美)的更多相关文章

  1. drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页

    复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...

  2. 【转载】使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...

  3. PourOver – 快速筛选和排序大的数据集合

    PourOver 是一个用于对大数据集合进行快速过滤的 JavaScript 库.它可以在60fps下运行,允许您构建数据研究应用和档案,即不必等待一个数据库调用来呈现查询结果. PourOver 基 ...

  4. java实现两个不同list对象合并后并排序

    工作上遇到一个要求两个不同list对象合并后并排序1.问题描述从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序.2.思路从数据库中查询到的数据放到各自list中,先遍历两 ...

  5. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  6. 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口

    来源:http://www.cnblogs.com/eagle1986/archive/2011/12/06/2278531.html 1:比较和排序的概念 比较:两个实体类之间按>,=,< ...

  7. iOS--自定义相册---对象数组按照时间戳排序

    将对象按照时间戳排序,这里典型的一个例子是登录账户的排序:本地客户端可能保存了多个账户信息,在登录窗口用户可以选择已经登陆过的账户直接登录,现在的需求是要时刻让最近登陆过的账户排在前面,对于每个账户, ...

  8. jquery实现对象数组 筛选出每条记录中的特定属性字段 及根据某个属性值筛选出指定的元素

    jquery实现对象数组 筛选出每条记录中的特定属性字段 直接上图: 源码: /** * 对后端返回的数据,筛选出符合报表的列项,多余的列项去除 */ function filterParams(da ...

  9. array排序(按数组中对象的属性进行排序)

    使用array.sort()对数组中对象的属性进行排序 <template> <div> <a @click="sortArray()">降序& ...

随机推荐

  1. IO中手机旋转事件的传递

    UIApplication -> delegate -> widnow -> rootViewController

  2. CPU使用率和Load Average的关系

    看了几篇博客总结的区别,自己终于明白了含义,在这里将理解总结一下: 对于定义和解释,感觉淘测试上的更容易理解: 引用如下: CPU使用率:  一段时间内CPU的使用状况,从这个指标可以看出某一段时间内 ...

  3. Sqlserver统计语句

    --查看被缓存的查询计划 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED st.text AS [SQL] , cp.cacheobjtype , c ...

  4. 解决Android AVD启动报错问题

    好不容易从ADT Bundle转为Android Studio的开发环境,一路荆棘,现在又遇到了模拟器的问题,本来直接用真机调试程序会更快些,但是为了模拟多种系统不得不开启AVD. 废话不说,问题和解 ...

  5. ASP.Net MVC与WebForm的区别

  6. QTP描述性编程中往WebEdit控件输入文字问题

    在网上查找到许多相关的描述性编程的案例,自己就想动手一试,于是在专家视图中输入如下代码: systemUtil.Run "http://www.baidu.com" wait(15 ...

  7. VC防止程序被多次运行 互斥体方法

    BOOL CXXXApp::InitInstance() //函数内添加代码 HANDLE hMutex=CreateMutex(NULL,TRUE,"test"); // 用于检 ...

  8. 简单的批量读取外部insert文并插入DB

    package com.tongxiang.item.base.dao; import java.io.BufferedReader; import java.io.File; import java ...

  9. C/C++中的sizeof

    代码: #include <iostream> #include <string> using namespace std; int main(){ char s1[]=&qu ...

  10. 引用 exit、return、_exit、_Exit这几个函数的区别

    引用 exit.return._exit._Exit这几个函数的区别 一.exit函数和return函数的主要区别是: exit用于在程序运行的过程中随时结束程序,其参数是返回给OS的.也可以这么讲: ...