LINQ橫向?qū)Ρ萬oreach方法
1 引言
今天,Terry點(diǎn)敲了我對于一段代碼的處理,誠如本文標(biāo)題所言,事件緣起于我對一個List
// Release : code10, 2009/05/06 // Author : Anytao, http://www.scjtxx.cn 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層的業(yè)務(wù)類,其定義為:
// Release : code10, 2009/05/06 // Author : Anytao, http://www.scjtxx.cn public class Account { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } } |
那么一件重要的事情,就是如何完成二者之間的轉(zhuǎn)換,尤其是,類似于List
2 本來的實(shí)現(xiàn)---想起來就是foreach
好了,典型的List
// Release : code10, 2009/05/06 // Author : Anytao, http://www.scjtxx.cn public List { List 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; } |
固有的思維并沒有錯,程序和處理誠如以往一樣值得回味。但是,忘卻和前進(jìn)同樣重要,所以我忘了用最簡單的辦法來更優(yōu)雅的處理這一操作。
3 改進(jìn)的方式---LINQ真的來了
LIQN來了,就不要吝嗇自己的武器,對于相同的代碼需求,優(yōu)雅和簡潔永遠(yuǎn)是值得追求的感覺,所以值得看似經(jīng)典的代碼,其實(shí)還可以更好:
// Release : code10, 2009/05/06 // Author : Anytao, http://www.scjtxx.cn public List { var result = from item in users select new Account { ID = item.ID, Name = item.FirstName + item.SecondName, Age = item.Age }; return result.ToList |
改善就這么一點(diǎn)點(diǎn),以LINQ方式實(shí)現(xiàn)的“智能”轉(zhuǎn)換,看起來更美,不是嗎。
4 結(jié)論
LINQ已經(jīng)來了,你還等什么。是的,進(jìn)步只有一點(diǎn)點(diǎn),作為開發(fā)故事中的小小一筆,但是我覺得值得書寫。當(dāng)然,這只是LINQ應(yīng)用的小小示例,同時foreach作為最重要的循環(huán)手段,仍然有著不可替代的作用,不容忽視。
【編輯推薦】