C# Cơ bản .NET Core §1 Cài đặt, chương trình C# đầu tiên §2 Biến, kiểu dữ liệu và nhập/xuất §3 Toán tử số học và gán §4 So sánh, logic và lệnh if, switch §5 Vòng lặp for, while §6 Phương thức - Method §7 Chuyển số thành chữ §8 Phương thức - Delegate §9 Lớp - Class §10 Namespace §11 Partial, Nested §12 Kiểu giá trị, tham chiếu §13 Kiểu vô danh và dynamic §14 Biểu thức lambda §15 Event §16 Hàm hủy - Quá tải toán tử - thành viên tĩnh - indexer §17 null và nullable §18 Mảng §19 Chuỗi ký tự §20 Tính kế thừa §21 Phương thức khởi tạo §22 Tính đa hình - abstract - interface §23 Struct và Enum §24 Ngoại lệ Exeption §25 IDisposable - using §26 File cơ bản §27 FileStream §28 Generic §29 Collection - List §30 SortedList §31 Queue / Stack §32 Linkedlist §33 Dictionary - HashSet §34 Phương thức mở rộng §35 ObservableCollection §36 LINQ §37 (Multithreading) async - bất đồng bộ §38 Type §39 Attribute Annotation §40 DI Dependency Injection §41 (Multithreading) Parallel §42 Thư viện lớp §43 (Networking) Uri, Dns, Ping §44 (Networking) HttpClient §45 (Networking) HttpMessageHandler §46 (Networking) HttpListener §47 (Networking) Tcp TcpListenerr/TcpClient §48 (ADO.NET) SqlConnection §49 (ADO.NET) SqlCommand §50 (ADO.NET) DataAdapter §51 (EF Core) Tổng quan §52 (EF Core) Tạo Model §53 (EF Core) Fluent API §54 (EF Core) Query §55 (EF Core) Scaffold §56 (EF Core) Migration §57 (ASP.NET CORE) Hello World! §58 (ASP.NET CORE) Middleware §59 (ASP.NET CORE) Map - Request - Response §60 (ASP.NET CORE) IServiceCollection - MapWhen §61 (ASP.NET CORE) Session - ISession §62 (ASP.NET CORE) Configuration §63 (ASP.NET CORE) Gửi Mail §64 (ASP.NET CORE) SASS/SCSS §65 (ASP.NET CORE) LibMan §66 (ASP.NET RAZOR) Khởi tạo và Route §67 (ASP.NET RAZOR) Cú pháp Razor §68 (ASP.NET RAZOR) Layout trong ASP.NET Core §69 (ASP.NET RAZOR) Partial §70 (ASP.NET RAZOR) ViewComponent §71 (ASP.NET RAZOR) TagHelper §72 (ASP.NET RAZOR) HtmlHelper §73 (ASP.NET RAZOR) PageModel §74 (ASP.NET RAZOR) Model Binding §75 (ASP.NET RAZOR) HTML Form, Validation §76 (ASP.NET RAZOR) Upload File §77 (ASP.NET RAZOR) Entity Framework §78 (ASP.NET RAZOR) Paging §79 (ASP.NET RAZOR) Identity (1) - Register, Login, Logout §80 (ASP.NET RAZOR) Identity (2) Lockout, Reset Password §81 (ASP.NET RAZOR) Identity (3) Google Login §82 (ASP.NET RAZOR) Identity (4) Facebook Login §83 (ASP.NET RAZOR) Identity (5) profile, password, email ... §84 (ASP.NET RAZOR) Identity (6) Role §85 (ASP.NET RAZOR) Identity (7) Role-based Authorization §86 (ASP.NET RAZOR) Identity (8) RoleClaim §87 (ASP.NET RAZOR) Identity (9) Authorization Handler §88 (ASP.NET RAZOR) IAuthorizationService §89 (ASP.NET MVC) Controller - View §90 (ASP.NET MVC) Route §91 (ASP.NET MVC) EF, Identity §92 (ASP.NET MVC) Binding, Validation §93 (ASP.NET MVC) Xây dựng Website(1) §94 (ASP.NET MVC) Xây dựng Website(2) §95 (ASP.NET MVC) Xây dựng Website(3) §96 (ASP.NET MVC) Xây dựng Website(4) §97 (ASP.NET MVC) Giỏ hàng - Cart (5) §98 (ASP.NET MVC) elFinder (5) §99 (ASP.NET MVC) SB Admin (6) §100 (ASP.NET MVC) Kestrel, publish
Collection - List (Bài trước)
(Bài tiếp) Queue / Stack

SortedList trong C#

Nếu tập dữ liệu của bạn được sắp xếp dựa trên một key (khóa), thì bạn có thể dùng đến SortedList<Tkey,TValue>. Lớp này sắp xếp dữ liệu dựa trên một key, kiểu đề làm key là bất kỳ.

SortedList được định nghĩa ở namespace: System.Collections, sử dụng bạn cần nạp namespace gồm:

using System.Collections;
using System.Collections.Generic;

Một đối tượng dữ liệu lưu vào SortedList dưới dạng cặp key/value, truy cập đến phần tử thông qua key hoặc thông qua vị trí (index) của dữ liệu trong danh sách. Chú ý, không cho phép trùng key.

Các thuộc tính, phương thức trong SortedList

Thành viên Diễn giải
Count Thuộc tính cho biết số phần tử
[key] Indexer truy cập đến phần tử có key
Keys Thuộc tính là danh sách các key trong danh sách sắp xếp
Values Thuộc tính lấy danh sách các giá trị trong danh sách
Add(key, value) Thêm một phần tử vào danh sách
Remove(key) Xóa phần tử bằng key của nó
Clear() Loại bỏ tất cả các phần tử khỏi danh sách
ContainKey(key) Kiểm tra có phần tử nào có khóa là key
ContainValue(value) Kiểm tra có phần tử nào có giá trị là value
IndexOfKey(key) Lấy chỉ số của phần tử có khóa là key
IndexOfValue(value) Lấy chỉ số của phần tử có giá trị là value

Ví dụ SortedList

Ví dụ tạo danh sách các sản phẩm, mỗi sản phẩm lưu vào danh sách với key tương ứng là tên và giá trị là mã sản phẩm. Từ đó, thực hiện một số thao tác trên danh sách này

public static void test () {

      // Khởi tạo SortedList
      var products = new SortedList<string, string> ();
      products.Add ("Iphone 6", "P-IPHONE-6"); // Thêm vào phần tử mới (key, value)
      products.Add ("Laptop Abc", "P-LAP");
      products["Điện thoại Z"] = "P-DIENTHOAI"; // Thêm vào phần tử bằng Indexer
      products["Tai nghe XXX"] = "P-TAI";       // Thêm vào phần tử bằng Indexer


      // Duyệt qua các phần tử, mỗi phần tử lấy key/value lưu trong biến
      // kiểu KeyValuePair
      Console.WriteLine ("TÊN VÀ MÃ");
      foreach (KeyValuePair<string, string> p in products) {
        Console.WriteLine ($"    {p.Key} - {p.Value}");
      } 
      // kết quả: (để ý danh sách đã xếp theo key)
      // TÊN và MÃ
      //     Điện thoại Z - P-DIENTHOAI
      //     Iphone 6 - P-IPHONE-6
      //     Laptop Abc - P-LAP
      //     Tai nghe XXX - P-TAI

      // Đọc value khi biết key
      string productName = "Tai nghe XXX";
      Console.WriteLine ($"{productName} có mã là {products[productName]}");
    
      // Cập nhật giá trị vào phần tử theo key
      products[productName] = "P-TAI-UPDATED";

      // Duyệt qua các giá trị
      Console.WriteLine ("\nDANH SÁCH MÃ SẢN PHẢM");
      foreach (var product_code in products.Values) {
          Console.WriteLine ($"--- {product_code}");
      } 
      // kết quả:
      // DANH SÁCH MÃ SẢN PHẢM
      // -- P-DIENTHOAI
      // -- P-IPHONE-6
      // -- P-LAP
      // -- P-TAI-UPDATED

      // Duyệt qua các key
      Console.WriteLine ("\nDANH SÁCH TÊN SP");
      foreach (var product_name in products.Keys) {
        Console.WriteLine ($"... {product_name}");
      } 
      // DANH SÁCH TÊN SP
      // -- Điện thoại Z
      // -- Iphone 6
      // -- Laptop Abc
      // -- Tai nghe XXX

}

Tham khảo mã nguồn: CS024_SomeCollections hoặc tải về ex024

Collection - List (Bài trước)
(Bài tiếp) Queue / Stack