LINQ來了,先忘記foreach

2021-06-04 06:52:37 字數 1548 閱讀 3374

1 引言

今天,terry點敲了我對於一段**的處理,誠如本文標題所言,事件緣起於我對乙個list轉換的小小處理。首先來看看,這個list轉換雙方的本來面目,以乙個常見的user類為例而言,user類代表了model層的實體類,其定義為:

// release : code10, 2008/10/06
// author  : anytao,
public

class user

public

string firstname

public

string secondname

public

int age

}

而account類,則**了business object層的業務類,其定義為:

// release : code10, 2008/10/06
// author  : anytao,
public

class account

public

string name

public

int age

}

那麼一件重要的事情,就是如何完成二者之間的轉換,尤其是,類似於list到list這樣的轉換,是常常發生在業務處理的實際操作中。關於二者的區別,屬於設計方面的論題,不是本文關注的物件。

2 本來的實現---想起來就是foreach

好了,典型的list轉換,我們固有思維中想到的就是迴圈了,所以我想都沒想就實現了下面的處理過程:

// release : code10, 2008/10/06
// author  : anytao,
public listgetaccounts(listusers)
return accounts;
}

固有的思維並沒有錯,程式和處理誠如以往一樣值得回味。但是,忘卻和前進同樣重要,所以我忘了用最簡單的辦法來更優雅的處理這一操作。

3 改進的方式---linq真的來了

liqn來了,就不要吝嗇自己的**,對於相同的**需求,優雅和簡潔永遠是值得追求的感覺,所以值得看似經典的**,其實還可以更好:

// release : code10, 2008/10/06
// author  : anytao,
public listgetaccounts(listusers)
;
return result.tolist();
}

改善就這麼一點點,以linq方式實現的「智慧型」轉換,看起來更美,不是嗎。

4 結論

linq已經來了,你還等什麼。是的,進步只有一點點,作為開發故事中的小小一筆,但是我覺得值得書寫。當然,這只是linq應用的小小示例,同時foreach作為最重要的迴圈手段,仍然有著不可替代的作用,不容忽視。

LINQ聖經 《LINQ實戰》

本書作者是 linq 社群中的重要成員,他們在書中展示了這一技術的精髓 快去享受這一盛宴吧。matt warren 微軟主架構師,linq 之父 linq 方面的傑作!深入 全面 客觀,令人欲罷不能。強烈推薦!patrick smacchia 微軟 mvp c 和 net 2.0 實戰 作者 微軟 ...

LINQ教程一 LINQ簡介

一 為什麼要使用linq 要理解為什麼使用linq,先來看下面乙個例子。假設有乙個整數型別的陣列,找到裡面的偶數並進行降序排序。1 using system 2using system.collections.generic 3using system.linq 4using system.text...

LINQ學習(一) LINQ初認識

一 簡介 1 什麼是linq?linq language integrated query 語言繼承查詢。linq是一組語言特性和api,可以使用統一的方式編寫各種查詢。用於儲存和檢索來自不同資料來源的資料,從而消除了程式設計語音和資料庫之間的不匹配,以及為不同型別的資料來源提供單個查詢介面。lin...