Soumettre la recherche
Mettre en ligne
Linq實戰
•
Télécharger en tant que PPTX, PDF
•
1 j'aime
•
1,119 vues
國昭 張
Suivre
深入介紹Linq的應用
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 84
Télécharger maintenant
Recommandé
Linq初階
Linq初階
國昭 張
Hb1004 function3
Hb1004 function3
jiannrong
Ptyhon 教學 003 函數
Ptyhon 教學 003 函數
信宏 陳
Entity Framework實戰
Entity Framework實戰
國昭 張
Loadแนวข้อสอบ นายช่างขุดลอกปฏิบัติงาน กรมเจ้าท่า
Loadแนวข้อสอบ นายช่างขุดลอกปฏิบัติงาน กรมเจ้าท่า
nawaporn khamseanwong
吴承芳 Pku copywriter
吴承芳 Pku copywriter
心怡 谢
презентація з україною в серці
презентація з україною в серці
Myagkova Tanya
SEGURANSA INTERNASIONAL.
SEGURANSA INTERNASIONAL.
MarceloSantos369
Recommandé
Linq初階
Linq初階
國昭 張
Hb1004 function3
Hb1004 function3
jiannrong
Ptyhon 教學 003 函數
Ptyhon 教學 003 函數
信宏 陳
Entity Framework實戰
Entity Framework實戰
國昭 張
Loadแนวข้อสอบ นายช่างขุดลอกปฏิบัติงาน กรมเจ้าท่า
Loadแนวข้อสอบ นายช่างขุดลอกปฏิบัติงาน กรมเจ้าท่า
nawaporn khamseanwong
吴承芳 Pku copywriter
吴承芳 Pku copywriter
心怡 谢
презентація з україною в серці
презентація з україною в серці
Myagkova Tanya
SEGURANSA INTERNASIONAL.
SEGURANSA INTERNASIONAL.
MarceloSantos369
презентація Сім чудес новгородківщини
презентація Сім чудес новгородківщини
Myagkova Tanya
Java Spring hibernate training
Java Spring hibernate training
Ducat Education
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
Entity framework 與 LINQ
Entity framework 與 LINQ
Sean Lu
Entity framework 入門第一課
Entity framework 入門第一課
Sean Lu
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
Duran Hsieh
Proyecto formativo
Proyecto formativo
Ana Sanjines
บันทึกประสบการณ์เรียนรู้ที่ UVIC (ฉบับปรับปรุง)
บันทึกประสบการณ์เรียนรู้ที่ UVIC (ฉบับปรับปรุง)
กมลรัตน์ ฉิมพาลี
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
Duran Hsieh
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹
Alan Tsai
Entity framework + Linq 介紹
Entity framework + Linq 介紹
Alan Tsai
การออกแบบโปสเตอร์ รางวัลระดับประเทศ
การออกแบบโปสเตอร์ รางวัลระดับประเทศ
กมลรัตน์ ฉิมพาลี
Mind mapping genetics
Mind mapping genetics
กมลรัตน์ ฉิมพาลี
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
Duran Hsieh
P1012016 Charla sobre la Política del Miedo
P1012016 Charla sobre la Política del Miedo
VENTURA Contenidos
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
國昭 張
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
國昭 張
20190126 ddd-meetup1
20190126 ddd-meetup1
國昭 張
事件風暴-設計衝刺
事件風暴-設計衝刺
國昭 張
事件風暴-領域建模
事件風暴-領域建模
國昭 張
單元測試
單元測試
國昭 張
Docker實務
Docker實務
國昭 張
Contenu connexe
En vedette
презентація Сім чудес новгородківщини
презентація Сім чудес новгородківщини
Myagkova Tanya
Java Spring hibernate training
Java Spring hibernate training
Ducat Education
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
Entity framework 與 LINQ
Entity framework 與 LINQ
Sean Lu
Entity framework 入門第一課
Entity framework 入門第一課
Sean Lu
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
Duran Hsieh
Proyecto formativo
Proyecto formativo
Ana Sanjines
บันทึกประสบการณ์เรียนรู้ที่ UVIC (ฉบับปรับปรุง)
บันทึกประสบการณ์เรียนรู้ที่ UVIC (ฉบับปรับปรุง)
กมลรัตน์ ฉิมพาลี
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
Duran Hsieh
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹
Alan Tsai
Entity framework + Linq 介紹
Entity framework + Linq 介紹
Alan Tsai
การออกแบบโปสเตอร์ รางวัลระดับประเทศ
การออกแบบโปสเตอร์ รางวัลระดับประเทศ
กมลรัตน์ ฉิมพาลี
Mind mapping genetics
Mind mapping genetics
กมลรัตน์ ฉิมพาลี
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
Duran Hsieh
P1012016 Charla sobre la Política del Miedo
P1012016 Charla sobre la Política del Miedo
VENTURA Contenidos
En vedette
(15)
презентація Сім чудес новгородківщини
презентація Сім чудес новгородківщини
Java Spring hibernate training
Java Spring hibernate training
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Entity framework 與 LINQ
Entity framework 與 LINQ
Entity framework 入門第一課
Entity framework 入門第一課
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
Proyecto formativo
Proyecto formativo
บันทึกประสบการณ์เรียนรู้ที่ UVIC (ฉบับปรับปรุง)
บันทึกประสบการณ์เรียนรู้ที่ UVIC (ฉบับปรับปรุง)
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹
Entity framework + Linq 介紹
Entity framework + Linq 介紹
การออกแบบโปสเตอร์ รางวัลระดับประเทศ
การออกแบบโปสเตอร์ รางวัลระดับประเทศ
Mind mapping genetics
Mind mapping genetics
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
P1012016 Charla sobre la Política del Miedo
P1012016 Charla sobre la Política del Miedo
Plus de 國昭 張
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
國昭 張
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
國昭 張
20190126 ddd-meetup1
20190126 ddd-meetup1
國昭 張
事件風暴-設計衝刺
事件風暴-設計衝刺
國昭 張
事件風暴-領域建模
事件風暴-領域建模
國昭 張
單元測試
單元測試
國昭 張
Docker實務
Docker實務
國昭 張
Scrum essential
Scrum essential
國昭 張
Docker進階探討
Docker進階探討
國昭 張
Vue
Vue
國昭 張
Docker基礎
Docker基礎
國昭 張
DDD架構設計
DDD架構設計
國昭 張
DDD系統分析
DDD系統分析
國昭 張
DDD引導
DDD引導
國昭 張
前端測試
前端測試
國昭 張
Asp.net core v1.0
Asp.net core v1.0
國昭 張
Redux+react js
Redux+react js
國昭 張
React js
React js
國昭 張
架構設計-資料存取的選擇
架構設計-資料存取的選擇
國昭 張
前端自動化工具
前端自動化工具
國昭 張
Plus de 國昭 張
(20)
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
20190126 ddd-meetup1
20190126 ddd-meetup1
事件風暴-設計衝刺
事件風暴-設計衝刺
事件風暴-領域建模
事件風暴-領域建模
單元測試
單元測試
Docker實務
Docker實務
Scrum essential
Scrum essential
Docker進階探討
Docker進階探討
Vue
Vue
Docker基礎
Docker基礎
DDD架構設計
DDD架構設計
DDD系統分析
DDD系統分析
DDD引導
DDD引導
前端測試
前端測試
Asp.net core v1.0
Asp.net core v1.0
Redux+react js
Redux+react js
React js
React js
架構設計-資料存取的選擇
架構設計-資料存取的選擇
前端自動化工具
前端自動化工具
Linq實戰
1.
Linq實戰
2.
大綱 轉型 篩選
選取 排序 連接 鑄型 聚合 集合操作 產生 存在
3.
轉型 AsEnumerable AsQueryable
Cast OfType
4.
AsEnumerable 將實做了IEnumerable<T>的物件強制 轉型成IEnumerable<T>。 (實務)多應用於DataTable這個類別的 物件轉型成為IEnumerable<DataRow>
5.
在DataTable上的範例
6.
AsQueryable 將實做了IEnumerable<T>介面的物件 轉型成為IQueryable<T>介面。 IQueryable<T>繼承了 IEnumerable<T>,不同之處在於 IEnumerable許多方法的操作是在記憶 體中的物件,而IQueryable是將一連串 的操作方法轉換成表達式樹之後再執行。
7.
Cast/OfType的源起 C# 2.0版本並沒有實做IEnumerable介 面,為達成向下相容,讓C#
3.0之前的集 合物件仍可以Linq操作,故提出Cast和 OfType這兩個方法供其轉型成 IEnumerable介面。
8.
Cast和OfType的差異 Cast將集合中每個元素都轉換成指定型 別的IEnumerable介面,若集合中存在一 個無法轉型的元素就會拋出例外。 OfType會跳過無法轉型的元素。
9.
Cast/OfType
10.
篩選 Where First/FirstOrDefault
Single/SingleOrDefault Skip/SkipWhile Take/TakeWhile Last/LastOrDefault
11.
Where 給予篩選條件,挑選需要的元素 Where有兩個函數簽章: ◦
Where(this IEnumerable<T> source, Func<T, bool> predicate) ◦ Where(this IEnumerable<T> source, Func<T, int, bool> predicate) 第一種較常使用
12.
Where的使用方式
13.
First/FirstOrDefault
14.
Single/SingleOrDefault 限定僅回傳一個,若回傳值超過一個則 會拋出例外。
15.
Single與First的不同 First是取得結果集中的第一個;Single限 定只有一個。 兩者的差別在於應用場合,若商業邏輯 規則中就是限定只有一個應該要使用 Single。
16.
Take/TakeWhile Take方法的輸入參數僅是一個整數數 值;用以標示從結果集中取得指定個數 的資料列。 TakeWhile的輸入參數是一個委派型別; 可以用以撰寫取得資料的條件。
17.
Take/TakeWhile的應用
18.
Where和TakeWhile的差別 •TakeWhile巡覽元素時,只要遇到不符合條件的元素就會停下來。 •Where會巡覽整個集合元素,將所有符合條件的元素都取出。
19.
Skip/SkipWhile Skip旨在由第一個元素開始計數,跳過 幾個元素,取剩下所有元素。 SkipWhile的While其意義如同 TakeWhile的While,都是遇到不符合條 件的元素就停止跳過的動作。
20.
Paging(分頁) 當資料量極為龐大時,依照資源管理的 角度在看系統設計時,會考慮採用分頁 顯示資料的方式。 Skip+Take
=> Paging。
21.
Last/LastOrDefault 與First相反;取集合中最後一個元素。
22.
ElementAt/ElementAtorDefault ElementAt回傳指定索引的元素。其效 果如同陣列索引子。
23.
選取 Select SelectMany
24.
Select 與Where並列最常使用的指令。 Select針對集合中每一個元素挑取該元 素或是該元素的屬性值。
25.
Select的應用
26.
Select的另一個函數簽章 IEnumerable<S> Select<T,S>( this
IEnumerable<T> source, Func<T, int, S> selector) 重點就在那個整數型別的輸參數,該參 數是由Linq本身給予的,其值的內容為 元素的索引值。(亦很常用到)
27.
Select與匿名類別 Select本質上就是集合論中的投影操作; 投影出來的結果某些時候與集合中元素 差異很大,並且投影的結果集僅會在該 函數中使用,可以考慮使用匿名類別。
28.
Select與匿名類別的混搭
29.
SelectMany 若集合的元素本身是可以被列舉(有實 做IEnumerable介面),則SelectMany會 再展開。
30.
SelectMany的簡單應用
31.
SelectMany複雜應用 等價
32.
SelectMany實戰應用場景 SelectMany由於具有展開的特性,通常 都用於處理巢狀結構的資料,當資料巢 狀的層數越多越需要使用SelectMany。
33.
排序 Order OrderByDescending
ThenBy ThenByDescending Reverse
34.
為什麼要有 ThenBy,ThenByDescending? OrderBy/OrderByDescending要求的輸 入參數資料型別為IEnumerable<T>,但 其輸出資料型別為 IOrderEnumerable<T>,故,若需要就排 序結果進行再排序,就無法使用 OrderBy/OrderByDescending。
35.
OrderBy,OrderByDesceding 共有兩個函數簽章: IOrderedEnumerable<T> OrderBy<T, K>(this
IEnumerable<T> source, Func<T, K> keySelector); IOrderedEnumerable<T> OrderBy<T,K>(this IEnumerable<T> source, Func<T,K> keySelector, IComparer<K> comparer)
36.
Order的運用
37.
OrderBy的排序 Order的排序是屬於不穩定排序;亦即其 排序不會理會元素插入的順序。 例:
集合 c = new 集合(); c.Add(A); c.Add(A’); =>A’比A晚到,但OrderBy類的排序是不 按照順序的。
38.
Reverse 將集合中的元素依其順序顛倒。
39.
連接 Join/Groupjoin GroupBy
40.
Join和GroupJoin Id Value 1 A 2
B 3 C Id ChildValue 1 a1 1 a2 1 a3 2 b1 2 b2 Id ChildValue A a1 A a2 A a3 B b1 B b2 Id ChildValue A [a1,a2,a3] B [b1,b2] C [] Join GroupJoin
41.
Join/GroupJoin Join與SQL指令的Join作業模式一致。 GroupJoin的作業模式為: 主表Left
Join子表,再以主表作為Group By的參考。
42.
Join實測
43.
GroupJoin實測
44.
GroupBy GroupBy的使用效果如同SQL中的 Group;都是依照指定的欄位將其資料群 組化。 Linq在進行GroupBy操作時,預設會使 用EqulityComparer<T>.Default作為元 素比較的比較器。
GroupBy的回傳型別是 IGrouping<K,E>;K是鍵值型別,E即為元 素資料型別。
45.
GroupBy的應用
46.
鑄型 Array/List Dictionary/LookUp
47.
鑄型 Linq的操作都是由介面IEnumerable所 提供的,但某些時候需要將IEnumerable 實際轉換成指定的型別作處理,這時候 就需要鑄型。 通常會需要鑄型的時機都是需要用到該 集合類別提供的特殊API。
48.
List/Array
49.
ToDictionary Dictionary是.Net用來處理鍵值對集合 最常被使用到的集合類別。 ToDictionary一共有三個函數簽章,其中 常被使用的僅有兩個。
50.
ToDictionary的應用
51.
ToLookUp LookUp與Dictionary有著很大的分別就 在於LookUp的鍵值允許重覆;亦即一個 鍵值可以對應到多個值。 (一對多)
52.
ToDictionary的資料來源指定的鍵 值發生重覆
53.
改以ToLookUp
54.
聚合 Average/Max/Min/Sum Count/LongCount
Aggregate
55.
Average/Max/Min/Sum
56.
Count/LongCount Count與LongCount皆是取得集合的元 素個數,但某些集合的元素個數可能超 過int所能負荷的值,故,LongCount就是 用以處理超大量的元素個數;但仍受限 於Long所能承受的。
57.
Aggregate 每個元素都會套入指定的Lambda表達 式,並且該Lambda的第一個輸入參數為 上一個元素運算後的結果。
58.
Aggregate的應用
59.
集合操作 Distinct Except
Intersect Union
60.
Distinct Distinct在處理上會呼叫集合元素的 equals和getHashCode方法來評估元素 是否重覆。
61.
Distinct的應用
62.
集合操作 集合操作如同數學集合論一般的操作。 ◦ Except:
差集 ◦ Intersect: 交集 ◦ Union: 聯集
63.
集合論 A B∪ =
AB A ∩ =B A - =B 聯集 交集 差集
64.
集合操作
65.
產生 DefaultIfEmpty Empty
Range Repeat
66.
DefaultIfEmpty 當存取的集合無任何元素,呼叫 DefaultIfEmpty時會自動產出一個集合; 該集合中的元素皆為型別的預設值。 兩種函數簽章: ◦
DefaultIfEmpty<T>(this IEnumerable<T> source) ◦ DefaultIfEmpty<T>(this IEnumerable<T> source, T defaultValue)
67.
DefaultIfEmpty的應用
68.
Empty 產生一個指定泛型型別的IEnumerable 集合。 這是Enumerable的靜態方法不是 IEnumerable的擴充方法。
69.
Range Range可以產生指定起迄的整數數列。 Range也是Enumerable的靜態方法。
70.
Repeat 產生指定重覆次數的相同整數值。 此為Enumerable的靜態方法。
71.
存在 Any All
Contain
72.
Any 集合中只要任一個元素滿足條件,即回 傳true。(不給Lambda表達式則直接回 傳true)
73.
Any的應用
74.
All 集合中每一個元素都要符合條件才會回 傳true。
75.
All的應用
76.
Contain Contain主要功能在於判斷集合中是否 有包含指定的元素。(使用 EqualityComparer<T>.Default來判斷 是否相等) Contain有兩個函數簽章,不同之處在於 第二個簽章允許輸入實作 IEqualityComparer<T>介面的物件。
77.
Contains的應用
78.
補遺 Concat SequenceEqual
79.
Concat 將兩個泛型型別相同的集合合併成一個。
80.
SequenceEqual 兩個集合依每次循環都取出同一索引的 元素以Equals方法比較,直到兩個集合 的元素都被巡覽過一次後回傳是否相同。 只要兩組集合的元素有一對是不相同或 是兩組集合的元素個數不一致都會回傳 False。
81.
SequenceEqual應用
82.
函數 功用 延遲? Aggregate
遞迴處理 All 判斷集合中所有元素是否都符合條件 Any 判斷集合中只要有一個元素符合條件 AsEnumerable 轉型成IEnumerable<T>物件 Average 取得數字集合的平均值 Cast 轉型成IEnumerable<T>物件 Contains 判斷集合中是否有指定元素 Count 計算集合的元素個數 DefaultIfEmpty 若集合無元素則產生一個 Distinct 去除重覆元素 ElementAt 取得指定索引的元素 ElementAtOrDefault 取得指定索引的元素,若無則回傳預設值 Empty 產生一個空的集合 Except 差集 First 取得第一個元素 FirstOrDefault 取得第一個元素,若無則回傳預設值
83.
函數 功用 延遲? GroupBy
群組化 GroupJoin 將聯合後的結果群組化 Intersect 交集 Join 聯合兩個集合 Last 取得最後一個元素 LastOrDefault 取得最後一個元素,若無則是預設值 LongCount 計算元素個數(回傳Long) Max 計算數值集合的最大值 Min 計算數值集合的最小值 OfType 轉型成IEnumerable<T>(i.e.會跳過例外) OrderBy 依條件排序 OrderByDescending 依條件逆排序 Range 產生指定起迄的整數集合 Repeat 產生指定個數及數值的集合 Reverse 顛倒集合的元素順序 Select 投影操作
84.
函數 功用 延遲? SelectMany
投影操作並展開 SequenceEqual 並行比較兩個集合是否相等 Single 取定並限制僅有一個元素 SingleOrDefault 取得並限制僅有一個元素,若非則是預設值 Skip 從集合前面跳過指定個數,再取剩下的元素 SkipWhile 依條件跳過前面元素,再取剩下的所有元素 Sum 計算數值集合的總合值 Take 依指定個數取得集合前面的元素 TakeWhile 依指定條件取得集合前面的元素 ThenBy 再排序 ThenByDescending 再逆排序 ToArray 鑄型成為陣列 ToDictionary 鑄型成為Dictionary型別 ToList 鑄型成為List<T> ToLookUp 鑄型成為LookUp Union 聯集 Where 依條件取得元素
Télécharger maintenant