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

C# 索引器進階應用(四):實作複合主鍵與唯一索引查詢

     編輯:關於C語言

前言

關聯式資料庫常用複合主鍵或唯一索引唯一識別記錄。本文示範如何透過多參數索引器,優雅封裝實體類別的複合鍵查詢邏輯。

情境:員工實體與複合鍵


public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Title { get; set; }
    // 複合鍵:FirstName + LastName
}

Staff 集合類別與索引器實作


public class StaffCollection
{
    private Dictionary _dict = new Dictionary();

    // 建立複合鍵
    private static string MakeKey(string first, string last) => $"{first}|{last}";

    public void Add(Employee emp)
    {
        _dict[MakeKey(emp.FirstName, emp.LastName)] = emp;
    }

    // 複合鍵索引器:兩個字串參數
    public Employee this[string firstName, string lastName]
    {
        get => _dict.TryGetValue(MakeKey(firstName, lastName), out var emp) ? emp : null;
        set
        {
            var key = MakeKey(firstName, lastName);
            if (value == null) _dict.Remove(key);
            else _dict[key] = value;
        }
    }

    // 單一鍵索引器(員工編號)
    public Employee this[int empId]
    {
        get => _dict.Values.FirstOrDefault(e => e.Id == empId);
    }
}

使用範例


var staff = new StaffCollection();
staff.Add(new Employee { FirstName = "John", LastName = "Doe", Title = "Engineer" });

// 複合鍵查詢
Employee emp = staff["John", "Doe"];  // 直觀、類字典語法

// 更新
staff["John", "Doe"] = new Employee { FirstName = "John", LastName = "Doe", Title = "Senior Engineer" };

// 刪除
staff["John", "Doe"] = null;

優勢分析

  • 語意清晰:呼叫端無需記住 GetByCompositeKey 等方法名。
  • 型別安全:參數數量、型別由編譯器檢查。
  • 可擴充:輕鬆新增 this[DateTime hireDate, string dept] 等其他索引器多載。
  • 配合 UI 資料繫結:WPF/WinForms 資料繫結支援索引器路徑(Staff[\"John\", \"Doe\"])。

結語

多參數索引器完美映射複合鍵查詢語意,簡化用戶端程式碼,提升 API 可發現性。下一篇將探討多重檢索路徑(如 ID、拼音、枚舉)的索引器多載設計。

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