程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> LINQ(Language Integrated Query)(1):簡介

LINQ(Language Integrated Query)(1):簡介

編輯:C#入門知識

C# 2.0最大的改進是泛型.C# 3.0最大的改進就是Linq(語言集成查詢).Linq又細分三大塊:Linq to XML,Linq to ADO.NET(Linq to SQL,Linq to DataSet,Linq to Entity),Linq to Object.

關於Linq的爭議

有些人對Linq to ADO.NET可能有很多異議.覺得它是對ADO.NET再封裝一次,性能降低了 .而且ADO.NET用著也挺好的.干嘛那麼麻煩再學個新技術Linq.其實編程語言中新增加的一些特性往往是為了更方便開發人員,提高開發效率,降低你犯錯誤的可能性.當然同時得也得考慮性能方面的事了.但是現在電腦硬件配置越來越好.以前的內存才那麼幾百M,現在動不動就幾G,CPU性能也越來越好.所以有時別太為電腦去考慮.多為程序員考慮下.怎麼少寫點代碼實現更多的功能.至於那些簡單的代碼後面再要執行啥復雜的操作也不用考慮太多.像托管代碼不就是替你做了很多事,比如不用去考慮啥內存洩露這樣的煩心事了嘛.中間多了個CLR性能自然下降了.但你寫起代碼來多省事了啊.

當然了如果你覺得Linq性能不好也可以完全不用,它實現的功能采取其他方法也照樣能實現.只不過多寫些代碼罷了.

簡單例子

先舉幾個關於Linq to Object簡單例子來大概介紹下Linq的語法.看具體怎麼用.

string[] names = { "arwen", "james", "sunny", "lily", "ada" };

 var name   = from na in names

                      select na;

            foreach (var str in name)

            {

                string s = str;

                Console.WriteLine(s);

            }

分析:

首先說下關鍵字var,它是用來做類型推斷,也就是說它可以用來代替string,int等所有關鍵字來定義一個類型.然後編譯器可編譯時可以通過變量的值推斷出變量類型.

其實在這裡你也可以用IEnumerable<string> name 來代替var name這樣定義變量.

然後就是from,select這樣的關鍵字了.看起來很像SQL語句的語法吧.Linq的設計應該就是參照了SQL的思想吧.sql語句就是封裝了很多細節,只告訴計算機去做什麼,而不用告訴他具體怎麼做.而我們平時用C#,Jave,C++這些語言都不僅要告訴計算機去做什麼,還要怎麼做.把具體的每一步用代碼寫出來.以上面的例子來說.如果我們要獲取數組中以a開頭的元素.如果沒用Linq你必須這樣寫代碼去判斷

List<string>  list = new List<string>();

foreach(string s in names)

{

     if(s.StartWith("a")

    list.Add(s);

}

就是說要自己指定計算機去具體怎麼做.但如果用Linq的話就直接用下面的語句

var name =   from na in names

                       where na.StartsWith("a")

                       select na;

用一個where去告訴計算機做什麼就行.具體怎麼做就不用管了.

所以Linq的真正的意義不僅是使你的一些操作更簡單,而且引進了SQL語句那種思想.盡量封裝一些具體操作細節,把注意力放在軟件要實現的功能方面.當然SQL語句應用范圍也是有限,只能針對表的一些簡單操作,更復雜的操作還需要一些擴充,比如SQL Server有T-SQL,Oracle有PL/SQL,面對一些復雜的操作它們還得寫很多代碼去告訴計算機具體怎麼做.

Linq也同樣有局限的.查詢語言,顧名思議只能查詢數據.所以我們只能從數組names中獲取數據,而不能通過Linq去修飾裡面的數據.

Linq很多用法跟SQL類似,所以可以參照SQL那些關鍵字用法學下.當然Linq還有其他一些更復雜的操作.再舉個簡單例子說下把獲得的數據排序

string[] names = { "arwen", "james", "sunny", "lily", "ada" };

var name = from na in names

orderby na descending     

select na;


作者:weiwenhp

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved