por 余小章 's 6 anos atrás
1094
Mais informações
Select()
OrderByDescending()
Join()
OrderBy()
Where()
IEnumerable
它是 Fluent Pattern 的一種實現
select |select new..into
orderby
descending
ascending
join [inner object] in [inner collection] on [outer Key] equals [inner Key] into [param] from [object] in [param].DefaultIfEmpty()
join [inner object] in [inner collection] on [outer Key] equals [inner Key]
group [collection] by [condition | column] into [param]
let [param] = value
where [Predicate
from [outer object] in [outer collection]
關鍵字都是小寫
Generation Operators
Empty
Repeat
Range
Aggregate Operators
Aggregate
Min, Max, Sum, and Average
Count and LongCount
Quantifier Operators
Contains
All
Any
Element operators
ElementAt, ElementAtOrDefault
DefaultIfEmpty
Single, SingleOrDefault
Last, LastOrDefault
First, FirstOrDefault
Equality Operator
SequenceEqual
To . . . Operators
ToLookup
ToList
ToArray
有哪些方法?
Conversion operators
Of Type
Cast
AsQueryable
AsEnumerable
Grouping Operator
GroupBy
Ordering Operators
Reverse
ThenBy
OrderByDescending
OrderBy
Partitioning Operators
SkipWhile
TakeWhile
Skip
跳過指定數量的元素,超出不引發例外
Take
取得指定數量的元素,超出不引發例外
Concatenation Operator
Intersect
交集
Except
差集
Union
聯集,剔除重複
Concat
不需要比較子
聯集,保留全部
參考型別要實作比較子IEqualityComparer
連結相同物件
Join Operators
Zip
以集合較少數的物件,連接另外一個集合
GroupJoin
要處理null
Outer Join
Join
用key連接不同的物件,型別要一樣
Inner Join
連接不同物件
Restriction Operator
Where
多個Where連結同等於And
可呼叫另一個函數
過濾符合條件的內容
Projection Operators
SelectMany
把集合容器的內容壓平、攤開
Select
把結果轉成另外一個型別
取出需要的欄位
映射
查詢語法都是延遲執行 Select,Where,OrderBy...
偵錯觀察運行結果
延遲執行要等到實際驅動點時,調用立即執行的擴充方法或是foreach,才會執行原本 LINQ 該執行的動作
強型別的 DataSet ,大都由工具產生出來的,很好, 但無法享用物件導向的特性,彈性不佳;可以手動實作,但很麻煩
弱型別的 DataTable,boxing/unboxing 會造成系統資源損耗
透過回傳一個 void 內容 (簡單的說就是 null 或不回傳最後的物件內容) 結束。
物件會自我參考 (self-referential),且新的物件內容會和最後一個物件內容等價
透過調用方法來定義物件內容
dynamic 執行時期檢查,沒有 IntelliSense
var 編譯時期檢查,有 IntelliSense
它是!!
針對多個集合物件,運行交集、聯集、差集、分組、過濾..等操作,回傳的型別組合,可說是千變萬化。 若要針對該回傳型別定義具名型別,會花費相當多的時間,這時匿名型別可替開發人員省下不少時間
型別只需要用到一次
CLR 會幫你換成 IEnumerator 的實作方式
List
繼承 IEnumerator
調用MoveNext方法,移至下一筆資料
取得Current屬性
繼承 IEnumerable
調用GetEnumerator取得IEnumeration
Sample:SimpleForeach
我們希望把物件巡訪的順序 (iteration) 跟依序拿到物件後要作什麼事 (process) 分開
聚合物件" 就是指 .NET 的 Collection, List, Array 等這類物件。意思是你不需要管 collection 裡每一個物件是怎麼擺的,用什麼結構處理的,用什麼邏輯或演算法處理的,我就只管照你安排好的順序一個一個拿出來就好。 (摘自 安得魯)
毋須知曉聚合物件的內部細節,即可依序存取內含的每一個元素。 (摘自 物件導向設計模式 Design Patterns 中文版,葉秉哲 譯)
聚合物件" 就是指 .NET 的 Collection, List, Array 等這類物件。意思是你不需要管 collection 裡每一個物件是怎麼擺的,用什麼結構處理的,用什麼邏輯或演算法處理的,我就只管照你安排好的順序一個一個拿出來就好。