你看,LINQ已經全面光臨了,本文並非探討LINQ的是是非非,而是通過自己開 發過程的一個小小的側面來展示,LINQ已經來了,而且更美好。
對技術而言,創新的最大敵人,是轉換固有思維,而不是技術本身。
1 引言
今天,Terry點敲了我對於一段代碼的處理,誠如本文標題所言,事件緣起於 我對一個List<T>轉換的小小處理。首先來看看,這個List<T>轉換 雙方的本來面目,以一個常見的User類為例而言,User類代表了Model層的實體類 ,其定義為:
// Release : code10, 2008/10/06
// Author : Anytao, http://www.anytao.com
public class User
{
public int ID { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public int Age { get; set; }
}
而Account類,則代碼了Business Object層的業務類,其定義為:
// Release : code10, 2008/10/06
// Author : Anytao, http://www.anytao.com
public class Account
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
那麼一件重要的事情,就是如何完成二者之間的轉換,尤其是,類似於 List<User>到List<Account>這樣的轉換,是常常發生在業務處理的 實際操作中。關於二者的區別,屬於設計方面的論題,不是本文關注的對象。
2 本來的實現---想起來就是foreach
好了,典型的List<T>轉換,我們固有思維中想到的就是循環了,所以 我想都沒想就實現了下面的處理過程:
// Release : code10, 2008/10/06
// Author : Anytao, http://www.anytao.com
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;
}
固有的思維並沒有錯,程序和處理誠如以往一樣值得回味。但是,忘卻和前進 同樣重要,所以我忘了用最簡單的辦法來更優雅的處理這一操作。