這里是原文出處:
簡單的概括LINQ
LINQ是Language-Integrated Query的縮寫,是C# 3.0和VB 9.0中新加入的語言特性,可以在編程時使用內置的查詢語言進行基於集合的操作。
List<User> userList = GetUserList(); var userWithOddId = from u in userList where u.UserID % 2 == 1 select u; foreach (User u in userWithOddId) { Console.WriteLine(u.UserName); }
如果沒有LINQ,要篩選出ID為奇數的User對象則需要創建一個List,然后遍歷整個列表,將符合特定條件的User對象放入新列表。而有了LINQ,這部分的篩選就變得非常容易,甚至只需要一句話就能完成。如果覺得這個例子不夠說明LINQ對生產力有重大貢獻的話,請關注我接下來的一篇文章(暫定名為《我們為什么要擁抱LINQ》)。LINQ特指形如上面這段代碼中from...where...select這樣的用法,其返回值是IQueryable<T>或IEnumerable<T>。
LINQ to SQL是.NET 3.5內置的一個輕量級O/R Mapping解決方案,可以將數據表映射為實體對象,方便開發人員對數據庫的操作。可見,LINQ to SQL實只是LINQ的一個實現,提供了一個可以查詢SQL Server數據庫的LINQ Provider。
LINQ Provider是LINQ查詢的執行器,標准LINQ語法支持許多的操作符,但是某個具體的LINQ實現可能只支持其中的一部分。在.NET 3.5默認提供了三種LINQ Provider,分別是LINQ to Object(即上面的例子),LINQ to SQL以及LINQ to XML。
LINQ to XXX表示使用LINQ針對XXX這種數據進行查詢的解決方案。我們可以自定義LINQ Provider,使用我們自定義的查詢規則來處理特定數據集。目前互聯網上已經可以找到數十種LINQ Provider(如LINQ to Flickr,LINQ to NHibernate等),而已經處於beta 3階段的ADO.NET Entity Framework,最終也會提供一個LINQ Provider,叫做“LINQ to Entities”。
以下是我自己的總結:
使用LINQ可以提高集合的操作效率,方便在特定的集合中尋找單條記錄,避免使用foreach循環,頻繁的數據庫查詢,可以根據實際的開發case適當的使用。
開發中需要循環處理一個集合中的每條數據時,我們可以把相應的數據統一放到內存的一個List集合中,然后使用LINQ獲取單條記錄進行業務處理。這樣會比使用froeach遍歷或者從數據庫中的單條查詢效率快很多
參考閱讀:LinQ專題
http://www.cnblogs.com/lyj/archive/2008/01/20/1046196.html
