踏上探索的旅途: 前言

在參加這次的鐵人賽之前,有時候會寫一些筆記心得放到網路上,但像鐵人賽這樣要連續30天有產出還真的是頭一遭,壓力也是比平常寫文章的感覺要大得多,但同時我也很高興有這個機會可以挑戰自己,讓自己在整理及撰寫技術文章上面可以更加的精進。

決定題目: Dig Deeper: LINQ

決定這個題目足足花了我兩個禮拜的時間,我覺得題目是文章中最重要的一個部分,在這30天中我們都要伴隨著這個主題打轉,在我得知有這項挑戰時,我腦中冒出的第一個想法就是.Net的LINQ,但同時又在想LINQ這個技術已經存在了一定的時間了,相關的文章隨便Google就有,在什麼情境下要用怎麼樣的陳述式或是函式大家應該很容易可以取得相關的資料,因此這個題目得到了我的(暫時)否定,之後我又想了許多不同的題目像是Dapper、ES2015...等,但仔細琢磨後不是自己了解得不夠深就是想不到可以寫到長篇幅的內容...。

我們回頭來想想鐵人賽的題目應該要有哪些要素吧,我自己認為的有下面三項:

  • 熱門的技術(.NET Framework的LINQ)
  • 冷門的部分(LINQ的原理)
  • 有挑戰性(平常較少接觸)

上述的條件中冷門的部分是我在一開始沒有想到的,但感謝朋友的提醒,讓我想到可以往更深的部份去鑽研,像是LINQ的原理這樣的文章就比較少,最後就決定朝這個方向寫作,寫的同時也可以幫助自己更加的了解LINQ背後的運作方式,因此這次的主題將會圍繞在LINQ的應用及其原理的研究上打轉。

文章概述

文章主要下面四大部分:

  • 工具及資源
  • LINQ Source Code會用到的背景知識
  • LINQ的應用
  • LINQ的原理

工具及資源

介紹LINQ相關的工具及資料來源。

背景知識

探討關於IEnumerable、IEnumerator、Iterator、yield...等的原理及用法。

應用

利用實際例子來說明LINQ的方法用法。

原理

利用.NET Core的Source Code解讀LINQ方法的實作原理

附註

  • 我是最近才在研究LINQ的Source Code,文章中若有解釋不到位甚至是錯誤的情形發生,還請各位大大指導。
  • 在每篇文章的最後會附上參考資料,若在文章中有引用到其他大大的文章也會盡量詳細的說明,若是有遺漏之處,還請點出。
  • 本文章會同步於GitHub上。