ภาพรวม
ใช้ Array.Sort จัดเรียงอาร์เรย์สตริงแบบ In-place (แก้ไขอาร์เรย์ต้นฉบับ) หรือ LINQ OrderBy สร้างอาร์เรย์ใหม่
โค้ดตัวอย่าง
using System;
using System.Linq;
public class Program {
public static void Main() {
string[] values = { "tim", "amit", "tom", "jack", "saurav" };
Console.WriteLine("Original: " + string.Join(", ", values));
// วิธีที่ 1: Array.Sort (In-place)
Array.Sort(values);
Console.WriteLine("Array.Sort: " + string.Join(", ", values));
// Reset
values = new[] { "tim", "amit", "tom", "jack", "saurav" };
// วิธีที่ 2: LINQ OrderBy (สร้างใหม่)
var sorted = values.OrderBy(x => x).ToArray();
Console.WriteLine("LINQ OrderBy: " + string.Join(", ", sorted));
// วิธีที่ 3: Descending
var desc = values.OrderByDescending(x => x).ToArray();
Console.WriteLine("Descending: " + string.Join(", ", desc));
}
}
ผลลัพธ์
Original: tim, amit, tom, jack, saurav
Array.Sort: amit, jack, saurav, tim, tom
LINQ OrderBy: amit, jack, saurav, tim, tom
Descending: tom, tim, saurav, jack, amit
Case-Insensitive Sorting
// Array.Sort
Array.Sort(values, StringComparer.OrdinalIgnoreCase);
// LINQ
var sorted = values.OrderBy(x => x, StringComparer.OrdinalIgnoreCase).ToArray();
Custom Sorting (เช่น ความยาว)
// ตามความยาว แล้วตามตัวอักษร
var byLength = values
.OrderBy(x => x.Length)
.ThenBy(x => x)
.ToArray();
// ผลลัพธ์: tim, tom, jack, amit, saurav
Performance
| Method | Time | Space | Mutates Original |
|---|---|---|---|
| Array.Sort | O(n log n) | O(1) / O(log n) | Yes |
| LINQ OrderBy | O(n log n) | O(n) | No (new array) |
| List.Sort | O(n log n) | O(1) | Yes |
สำหรับ List<string>
var list = new List<string> { "tim", "amit", "tom" };
list.Sort(); // In-place
// หรือ
var sorted = list.OrderBy(x => x).ToList(); // New list