首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

List 排序擴展方法實作(下):並列排名邏輯與實戰展示

     編輯:關於C語言

實體類別定義

public class CityInfo
{
    public string City { get; set; }
    public float Salary { get; set; }
}

資料繫結與排序呼叫

if (!IsPostBack)
{
    var s = new List { 
        new CityInfo(){ City = "上海", Salary=8000f }, 
        new CityInfo() { City = "杭州", Salary=8000f }, 
        new CityInfo() { City = "北京", Salary=6000f }, 
        new CityInfo() { City = "廣州", Salary=6000f }, 
        new CityInfo() { City = "深圳", Salary=4000f }, 
        new CityInfo() { City = "成都", Salary=2000f },
        new CityInfo() { City = "武漢", Salary=2000f }
    };
    
    // 呼叫擴展方法 Rank,依薪資排序並產生「位次」欄位
    this.GridView1.DataSource = s.Rank((c, c1) => c.Salary.CompareTo(c1.Salary), "位次");
    this.GridView1.DataBind();
}

前端 GridView 設定

<asp:GridView ID="GridView1" runat="server" BackColor="White" Width="40%" 
    BorderColor="#67DB4A" BorderStyle="None" BorderWidth="1px" CellPadding="4">
    <RowStyle BackColor="White" ForeColor="#003399" />
    <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
    <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
    <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
    <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
</asp:GridView>

執行結果:正確處理並列排名

CitySalary位次
杭州80001
上海80001
北京60003
廣州60003
深圳40005
武漢20006
成都20006

相同薪資共享名次,下一名次正確跳過(如兩個第1名,下一名為第3名),完全符合競賽排名規則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved