LINQ 已全面登上舞台,本文不探討其優劣,而是透過開發過程中一個小小的集合轉換案例,展示 LINQ 如何帶來更優雅的編碼體驗。對技術而言,創新的最大阻力往往不是技術本身,而是我們固有的思維模式。
今天,Terry 指出了我對一段 List<T> 轉換代碼的處理方式。事情緣起於一個常見的實體類 User 與業務類 Account 之間的轉換:
public class User
{
public int ID { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public int Age { get; set; }
}
public class Account
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
如何將 List<User> 優雅地轉換為 List<Account>,是業務邏輯中常見的操作。兩者的設計差異不在本文討論範圍內。
面對典型的 List 轉換,固有思維直指循環。我毫不猶豫寫出了如下代碼:
public List<Account> GetAccounts(List<User> users)
{
List<Account> accounts = new List<Account>();
foreach (User item in users)
{
Account account = new Account();
account.ID = item.ID;
account.Name = item.FirstName + item.SecondName;
account.Age = item.Age;
accounts.Add(account);
}
return accounts;
}
這種寫法沒有錯,邏輯清晰,卻忽略了更簡潔、更具表達力的做法。忘卻舊習慣、擁抱新範式,同樣重要。LINQ 讓我們能以聲明式風格完成同樣任務,程式碼更易讀、更易維護。
(圖片佔位符保留)