• 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。

  • 相关阅读:
    centos7使用supermin制作centos7的docker镜像包
    Linux ip netns 命令
    ip命令讲解
    openstack API应用用
    在EF6.0中打印数据库操作日志
    EF记录统一添加创建,修改时间
    Inner Join and Left Join 与条件的结合
    字符串分割
    居中方案
    移动 前端 框架
  • 原文地址:https://www.cnblogs.com/tiantianle/p/4888952.html
Copyright © 2020-2023  润新知