`
zxlyecf2
  • 浏览: 129598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对一个集合按对象不同属性进行排序

    博客分类:
  • C#
阅读更多

对于某个集合,我们需要对其按对象不同属性进行排序,对于在查询数据时遇到这样的情况,一些sql语句就能解决,当然我们也可以把数据查出来自己经过循环判断之后也能实现,今天这里介绍一种比较简单的方法,在定义对象时,只需要实现IComparable接口,去重写一下里面的CompareTo方法就可以了,如果希望有更强大的功能,可以参考我以前写的http://zxlyecf2.iteye.com/blog/1977948;对于习惯使用Linq的实现起来就跟简单了

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CustomListTest.Students
{
    public class Student : IComparable<Student>
    {
        public Student(string n, string g, int i)
        {
            name = n;
            gender = g;
            id = i;
        }

        public string name
        {
            get;
            set;
        }

        public string gender
        {
            get;
            set;
        }

        public int id
        {
            get;
            set;
        }

        public int CompareTo(Student other)
        {
            //name降序,id升序,若要改变顺序只需修改一下other.name和name的前后顺序
            if (other.name.CompareTo(name) == 0)
            {
                return id.CompareTo(other.id);
            }
            else
            {
                return other.name.CompareTo(name);
            }
        }
    }
}

 

    Student songchao = new Student("SongChao", "Man", 100150);
            Student wuxing = new Student("WuXing", "Women", 100121);
            Student songchao2 = new Student("SongChao", "Women", 100130);
            Student aa = new Student("aa", "Women", 100133);
            Student aa2 = new Student("aa", "Women", 100130);

            List<Student> students = new List<Student>();
            students.Add(songchao);
            students.Add(wuxing);
            students.Add(songchao2);
            students.Add(aa);
            students.Add(aa2);

            foreach (Student student in students)
            {
                Console.WriteLine("Name  " + student.name + " ID  " + student.id);
            }
            Console.WriteLine("");

            students.Sort();
            foreach (Student student in students)
            {
                Console.WriteLine("Name  " + student.name + " ID  " + student.id);
            }

            ////使用Linq更简单实现
            //var ss = from u in students orderby u.name descending, u.id ascending select u;
            //foreach (Student student in ss)
            //{
            //    Console.WriteLine("Name  " + student.name + " ID  " + student.id);
            //}
            Console.Read();

 

0
0
分享到:
评论

相关推荐

    List集合按照对象中某个属性排序通用工具类(按对象中某属性排序)

    在开发中,我们可能会遇到,我们会根据不同情况对一个List集合进行排序操作,为了方便List集合根据对象中的某一个属性进行排序,开发了此工具类:

    Java对集合中的对象排序

    对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序

    根据对象属性将对象排序

    根据对象一个或多个属性将对象进行综合排序,可进行逆序,也可进行顺排序,若第一个属性相同,则进行第二个属性进行排序,最好得到最后的结果

    List 对象属性排序

    对List集合中 对象属性排序,不需要在每个实体类中重写Sort方法,实现了代码的重用。非常好用的Util类

    java版本List中对象多属性排序.rar

    java版本List中对象多属性排序.rar

    Java实现储存对象并按对象某属性排序的几种方法示例

    主要介绍了Java实现储存对象并按对象某属性排序的几种方法,结合实例形式详细分析了Java储存对象并按对象某属性排序的具体实现方法与操作注意事项,需要的朋友可以参考下

    List集合对象中按照不同属性大小排序的实例

    下面小编就为大家带来一篇List集合对象中按照不同属性大小排序的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    meteor-subsort:一个使用另一个集合的引用对对象数组进行排序的示例

    什么这是通过在用户个人资料上存储一个对象数组来实现的,每个对象都有一个ID引用,该ID引用了我们想要的另一个集合中的文档,以及一个索引属性,该属性在通过拖放重新排序时会更新。 然后,我们使用查询中的ID列表...

    学生集合排序

    将学生对象放入一个集合,通过重写学生类的hashcode与equals方法,以及通过collections工具类调用实现caparator接口类的专门比较器及方法,对存放学生的集合进行多属性排序

    java中进行集合排序

    java中按找对象的某个属性进行升序降序的排序

    根据某个属性对List中的所有对象分组,该属性值相同的对象分到一个组

    前段时间跟公司前端对接的时候,一个简单的数据库查询,但是前端说将结果按某个属性分组,每组单独一个集合,集合第一个元素为该属性,第二个元素为该属性值相同的所有对象集合,由于是小白一个,这个数据整理也是花...

    java根据List内对象的属性排序方法

    下面小编就为大家分享一篇java根据List内对象的属性排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    java ArrayList集合中的某个对象属性进行排序的实现代码

    主要介绍了java ArrayList集合中的某个对象属性进行排序的实现代码,需要的朋友可以参考下

    集合anylist要进行筛选.pdf

    Ilist接口:定义了利用索引访问集合对象的方法,还继承了ICollection和IEnumerable接口,除实现了接口原有的方法成员外,其本身也定义多个专门的方法成员,例如新增、移除、在指定位置插入元素或是返回特定元素在...

    sifter.js:一个用于按属性(或多个属性)对对象的数组和哈希进行文本搜索的库。 专为自动完成而设计

    Sifter是一个客户端和服务器端库(通过 ),用于按属性(或多个属性)对对象的数组和哈希进行文本搜索。 专为自动完成而设计。 该过程分为三个步骤:评分,过滤,排序。 支持díåcritîçs。 例如,如果搜索...

    javascript文档

    按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (&gt;&gt;) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式...

    JScript 语言参考

    按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (&gt;&gt;) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式...

    微软JavaScript手册

    按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (&gt;&gt;) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式...

    Java集合框架的一个扑克牌小程序

    * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void ...

    集合排序_集合类详解

    您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用...

Global site tag (gtag.js) - Google Analytics