一般我們在撰寫程式時,很常會使用到List<>來裝取自定義的類別陣列,跟一般的陣列插在哪呢?!好處是什麼?!好處就是一般的陣列需要先 宣告長度,而List<>不用,所以在資料個數不一的時候我們可能比較會使用List<>來裝載資料,並且依序地呈現給使用者 看,所以List<>的排序就變得將當重要了!

本篇文章將引導您將List<object>排序。

以身高為範例,首先我們先自定義一個類別用來放在List<>中用的。

   1:  public class TallItem{
   2:      public string name { set; get; }
   3:      public int Height { set; get; }
   4:  }

再來將個別的身高資料放入List<>中

   1:  public void InitialTallItem() {
   2:      List<TallItem> list_tallItems = new List<TallItem>();
   3:      list_tallItems.Add(new TallItem() { name = "Tony", Height = 180 });
   4:      list_tallItems.Add(new TallItem() { name = "Jorden", Height = 200 });
   5:      list_tallItems.Add(new TallItem() { name = "Nono", Height = 155 });
   6:      list_tallItems.Add(new TallItem() { name = "Jessica", Height = 166 });
   7:  }

再來是排序

   1:  list_tallItems.Sort((x, y) => { return -x.Height.CompareTo(y.Height); });

所以全部大概長這樣:

   1:  public void InitialTallItem() {
   2:      List<TallItem> list_tallItems = new List<TallItem>();
   3:      list_tallItems.Add(new TallItem() { name = "Tony", Height = 180 });
   4:      list_tallItems.Add(new TallItem() { name = "Jorden", Height = 200 });
   5:      list_tallItems.Add(new TallItem() { name = "Nono", Height = 155 });
   6:      list_tallItems.Add(new TallItem() { name = "Jessica", Height = 166 });
   7:   
   8:      list_tallItems.Sort((x, y) => { return -x.Height.CompareTo(y.Height); });
   9:   
  10:      for (int i = 0; i < list_tallItems.Count; i++) {
  11:          Debug.WriteLine(list_tallItems[i].name + ":" + list_tallItems[i].Height);
  12:      }
  13:  }

顯示的結果會是這樣:

   1:  Jorden:200
   2:  Tony:180
   3:  Jessica:166
   4:  Nono:155

如此一來List<TallItem>就經過排序囉,並且是由高到低排序。

除此之外也可以使用Linq語法來排序,此方法有點像在下SQL資料庫的語法,也比較淺顯易懂

   1:  List<TallItem> list_tallItems = new List<TallItem>();
   2:  list_tallItems.Add(new TallItem() { name = "Tony", Height = 180 });
   3:  list_tallItems.Add(new TallItem() { name = "Jorden", Height = 200 });
   4:  list_tallItems.Add(new TallItem() { name = "Nono", Height = 155 });
   5:  list_tallItems.Add(new TallItem() { name = "Jessica", Height = 166 });
   6:   
   7:  //依 身高 做遞增排序  
   8:  list_tallItems = list_tallItems.OrderBy(x => x.Height).ToList();
   9:  foreach (TallItem item in list_tallItems)
  10:  {
  11:      Debug.WriteLine(item.name + ":" + item.Height);
  12:  }
  13:  Debug.WriteLine("================================");
  14:  //依 身高 做遞減排序  
  15:  list_tallItems = list_tallItems.OrderByDescending(x => x.Height).ToList();
  16:  foreach (TallItem item in list_tallItems)
  17:  {
  18:      Debug.WriteLine(item.name + ":" + item.Height);
  19:  }

結果會像這樣:

   1:  Nono:155
   2:  Jessica:166
   3:  Tony:180
   4:  Jorden:200
   5:  ================================
   6:  Jorden:200
   7:  Tony:180
   8:  Jessica:166
   9:  Nono:155

List<object>排序 z的更多相关文章

  1. LINQ系列:Linq to Object排序操作符

    LINQ排序操作符包括:OrderBy.OrderByDescending.ThenBy.ThenByDescending及Reverse. 1. OrderBy 1>. 原型定义 public ...

  2. Oracle中针对中文进行排序[Z]

    在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择: 按中文拼音进行排序:SCHINESE_PINYIN_M 按中文部首进行排序:SCHINESE_RA ...

  3. C#List<object>排序

    //定义一个集合 var list = new List<Object>();//这里的Object为对象类型 //假设list已经有数据存进去,根据对象的某个字段升序或降序 var or ...

  4. Initializing nested object properties z

    public class Employee { public Employee() { this.Insurance = new Insurance(); } // Perhaps another c ...

  5. JavaScript对象 Object类型基础

    前言 JavaScript 对象是整个语言学习的一个难点.本文主要带大家入门学习Object知识 对象定义 javascript的基本数据类型包括undefined.null.boolean.stri ...

  6. Pandas基本功能之算术运算、排序和排名

    算术运算和数据对齐 Series和DataFrame中行运算和列运算有种特征叫做广播 在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集.自动的数据对齐操作在不重叠的索引处引入了NA ...

  7. Python排序之多属性排序

    1.sort函数说明: sort函数是list类的一个方法,说明如下: sort(...)L.sort(cmp=None, key=None, reverse=False) -- stable sor ...

  8. 恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合

    在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类. @Data @AllArgsConstructor public class Employee { private Inte ...

  9. java-集合类

    框架图 集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.数组和集合类同是容器,有何不同?数组存储同一类型的基本数据类 ...

随机推荐

  1. java新手笔记23 异常

    1.import package com.yfs.javase; import java.util.Scanner; //import java.lang.String;//默认导入 public c ...

  2. ZOJ 3471 Most Powerful(DP + 状态压缩)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257 题目大意:有 n(2<=n<=10) 个原子,每两 ...

  3. EF 存储过程(下)

    本节,我们将学习如何手动添加/修改存储过程,如何使EF能够支持Output类型的参数 > 添加/修改存储过程 有时候,某个SQL语句比较复杂,但是数据库中又没有定义相应的存储过程.这个时候,我们 ...

  4. IOS视图旋转可放大缩小

    - (IBAction)hideBut:(id)sender { if (self.flg) { [UIView animateWithDuration:0.3 animations:^{ self. ...

  5. django 学习点滴

    django连接数据库要安装第三方包,比如mysql的就是 python-mysqldb, 用apt-cache search python-mysql 搜索一下. django的project可以放 ...

  6. [开发环境] Ubuntu12.04 Telnet服务设置

    Ubuntu12.04默认未启用Telnet服务,配置Telnet服务步骤如下: 1. 安装和配置 安装openbsd-inetd: #sudo apt-get install openbsd-ine ...

  7. overflow:hidden真的失效了吗

    项目中常常有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗? 其实看似不合理的现象背后都会有其合理的解释. 我们知 ...

  8. thinkphp多表查询

    在学习thinkphp 的过程中,需要对多表进行操作,但是在实际过程中,总是遇到各种问题,所以写下这篇博文,作为自己的学习历程 在操作过程中,两表查询都没有问题,但是三表查询就开始出现问题 有以下三张 ...

  9. 数据库MySQL与xls文件的互导

    最近的一个项目需要将xls表导入到MySQL数据库中和将MySQL数据表导出到xls表中,在网上搜了很多资料,经过多次尝试终于实现了功能,废话不多说,在这粘贴出代码,希望可以帮到需要的朋友. 一.将. ...

  10. PHP全局变量

    1.global 关键字 2.$GLOBALS 3.使用静态变量