︿
Top

2015年1月23日 星期五

C# LINQ: GroupBy


緣起

前一陣子參與的專案裡, 用了不少 LINQ 的語法, 但沒有時間細推其原埋.
其中, 常用到 GroupBy 的語法, 作各群組的 加熜, 平均, 最大值, 最小值, 計數 ... 等.
本文會採用 Query Syntax 及 Method Syntax 並陳的方式, 進行 GroupBy 的說明. 同時, 以 LINQPad 展示其執行結果, 會有助於了解 GroupBy 在作什麼.
註: 關於 Query Syntax, Method Syntax, LINQPad, 可以參考筆者的這篇文章.

完整程式範例, 筆者放在 GitHub, 請由此下載.

C# LINQ: QuerySyntax and Method Syntax with LINQPad

緣起

前一陣子參與的專案裡, 用了不少 LINQ 的語法, 但沒有時間細推其原埋.
MSDN 的官方說法: LINQ 的語法共有 2 種: 一個是 Query Syntax, 一個是 Method Syntax. 本文將作淺顯的說明.
另外, 亦將介紹一個工具 LINQPad 的工具, 在您還不是很熟悉 Method Syntax 的時候, 可以協助將 Query Syntax 轉為對應的 Method Syntax.

完整程式範例, 筆者放在 GitHub, 請由此下載.

2015年1月18日 星期日

Oracle PL/SQL Dependency Injection for loose coupling


緣起


幾個月前, 有看到一篇針對 Oracle PL/SQL 進行重構的文章, 改用類似 Dependency Injection 的方式來進行設計, 直到最近才有時間撰寫網誌, 留下記錄.

該作者主要有2篇文章, 筆者在參考文件, 作了一些摘要說明. 真的很難想像 Oracle PL/SQL 可以實作一些 Design Pattern.

以下內容, 係筆者依目前工作上接觸到的產業進行情境設計.

完整程式範例, 筆者放在 GitHub, 請由此下載.



2015年1月17日 星期六

C# yield

緣起

接續 前一篇 對 IEnumerator 及 IEnumerable 的探討, 及進一步 Study, 可以發現, .NET Framework 的集合物件都有實作 IEnumerable (非泛型) 或 IEnumerable<T> (泛型),
故若要產生一個物件集合, 供外部逐一取出元素, 直接利用現成的泛型類別 (ex: List<T>, Dictionary<T>) 產生之後, 回傳給呼叫端; 再由呼叫端用 foreach 逐一讀取, 這是很直覺的寫法.
但有沒有更方便的方式呢? 在某些情境下, 或許可以用 yield 這個 Syntactic Sugar.

完整程式範例, 筆者放在 GitHub, 請由此下載.

C# IEnumerable, IEnumerator, IQueryable

緣起

最近在 Study 一些 C# 的議題, 為避免忘記, 所以留下一些摘要記錄; 以下文章大部份係摘自 C# 5.0 in a Nutshell, 5th Edition 的第4章 "Advanced C#" 裡的 Enumeration and Iterators 說明.

完整程式範例, 筆者放在 GitHub, 請由此下載.