Unity3D C#中使用LINQ查詢(與 SQL的區別)


前言:

學過SQL的一看就懂

LINQ代碼很直觀

但是,LINQ卻又跟SQL完全不同

 

首先來看一下調用LINQ的代碼

int[] badgers = {36,5,91,3,41,69,8};

var skunks = 

  from pigeon in badgers

  where (pigeon != 36 && pigeon <50)

  orderby pigeon descending

  select pigeon + 5;

var bears = skunks.Take(3);

Debug.Log("Get your kicks on route {0}",weasels.Sum());

 

LINQ與SQL最大的不同

就在於SQL查詢的是數據庫表,而LINQ查詢的是對象

也就是說,SQL查詢的是集合,而LINQ查詢的是可以儲存的任何內容,可以是值、struct、對象等。

這就形成了最大的區別:SQL表沒有順序,而LINQ查詢的內容是有順序的

 

從代碼行的不同

SQL語句把SELECT放在第一句

而LINQ將SELECT放在了最后一句

兩者同樣具有where,orderby等語句

 

LINQ並不只是查詢並獲取數據項

LINQ還提供了管理數據所需要的各種工具

例如上面代碼的 select pigeon + 5;

作用為將每個數字加5后輸出

類似地,還有LINQ定義的一些方法,如Count(),Min(),Max(),Sum(),Average()等

 

LINQ是什么原理呢

首先,需要循環處理整個對象

然后,將每個值與where條件作比較

最后,收集結果儲存在代碼中以供使用

因此LINQ代碼的優缺點一目了然:

優點:C#把大量行為壓縮到幾行代碼中,可以用很少的代碼完成復雜的工作

缺點:性能相對不高。for手寫代碼比用LINQ代碼速度快十幾倍(網友測試結論)

 

注意:

LINQ查詢會有“延遲計算”

也就是說,訪問LINQ查詢的結果之前並不會真正運行LINQ查詢

這算是一種性能機制

當然,也可以使用ToList()告訴LINQ立即執行查詢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM