[C#] 委派 Delegate 與 Lambda

  • 9593
  • 0
  • C#
  • 2018-04-14

委派 Delegate

講的簡單一點 他就像一個轉接頭

你充 iphone 需要轉接頭 但轉接頭的兩端能插什麼線是固定的

你買了 Type-C 的線 就不可能插進 Micro USB 的孔

但也就是說 只要是插的進去的線 就都可以讓你充電

今天你有錢可以用原廠的線 明天比較窮就用夜市牌的

反正只要插的進轉接器 就是可以用的線

...繼續閱讀 »

[Task - 2] Wait 與 ContinueWith

  • 29915
  • 0
  • C#
  • 2018-04-09

前面我們看過了 Task 幾種使用方法

那如果今天我們想要的是

1. 三個好友同時搶廉航機票,只要任一人搶成功,就可以成行

=> Task.WaitAny

2. 三個好友同時從起點出發,全部都抵達終點才算獲勝

=> Task.WaitAll

3. 三個好友接力賽跑,A 跑完才能換 B,B 跑完才能換 C

=> ContinueWith

...繼續閱讀 »

[Task - 1] 使用 Task 的各種方式

  • 30424
  • 0
  • C#
  • 2018-04-09

在比較久以前的.NET Framework版本 大家可能直接操作過Thread

一言以蔽之 在絕大部份情況下

建議大家使用 Task 取代 Thread

 

再一個問題

前面我們討論過 Parallel,當然我們也可以同時 new 很多 Task,讓結果就像是 Parallel

那我該選擇哪個?

一言以蔽之 在絕大部份情況下

建議大家用 Parallel 取代 多個 Task

...繼續閱讀 »

[平行處理 - 1] Parallel.ForEach

  • 4853
  • 0
  • C#
  • 2018-04-09

假設媽媽跟你說 今天晚上九點時 你有三件事要做

1. 掃地 2. 洗澡 3. 洗碗

因為這三件事並不存在先後關係 所以哪件先做都可以

而聰明如你一定會想 如果我可以同時掃地、洗澡、洗碗一起做

那不是就太好了嗎

...繼續閱讀 »

[報表程式 - 1 ] 單一觸發點

常常我們有一些撈報表資料的需求

我們需要從資料庫裡撈出一些符合某種情況的資料 (觸發點)

然後再根據這些資料 去衍生出更多資料 (來自更多其他的資料表)

再把所有資料拿來做一些計算

最後組裝成我們要的結果

並且以不同的方式進行呈現 (也許寫出成檔案)

...繼續閱讀 »

[檔案輸出]寫個Helper讓NPOI變得更好用 (使用NPOI產出Excel檔案)

NPOI是很老牌的可以讓你產出xls與xlsx的元件

但可能就是因為他太老牌了 許多操作應用上並不便利

通常程式碼中只要用了NPOI 都會看起來落落長很醜

很像.net 以前 大家寫 webform 用 datatable + gridview 在塞資料的那種味道

程式碼中 會有超多創建格子、給格式、給值.......幾百行、千行無限循環

跟現在大家喜歡寫程式習慣並不太符合

所以今天我們試著來包裝NPOI讓他變的更易用些

...繼續閱讀 »

[Reflection]簡單的C# Reflection練習

  • 5344
  • 0
  • C#
  • 2018-04-08

其實Reflection不難  但就是效能比不上hard code好

如果應用的情境不需在意效能 拿來處理一些瑣碎的小功能是蠻好用的

今天我們以假設要輸入一個字串List => 取回 不重覆、並排除空字串、Null、前後空白為例

來寫一個小function

...繼續閱讀 »

[Entity Framework]使用LinqKit在Entity Framework中進行Or串接

當我們使用Entity Framework + Linq時

要做and的運算是很簡單的

目標.Where().Where().Where().....即可

但如果我們要串接Or運算呢?

很可惜Linq本身先天並不支援

但我們可以透過LinqKit的幫助

假設我們想輸出的SQL為

SELECT *
FROM [MySampleTable]
where [NAME] like '%1%' or [NAME] like '%2%' or [NAME] like '%3%'
...繼續閱讀 »