[小菜一碟] 使用 C# 將民國日期的字串轉換成西元日期

四年一次會出現的不是只有總統大選,還有 2 月 29 日的問題,程式如果寫得不夠久大概也不會遇到,像今年就有可能會收到像是「113/02/29」、「113年2月29日」這樣的日期字串,在 C# 中如果直接先轉成西元日期的 113/02/29,再加上 1911 年,像這樣:

DateTime.ParseExact("113/02/29", "yyy/MM/dd", null).AddYears(1911);

那我們的程式應該已經爆了,因為西元 113 年沒有 2 月 29 日,關於閏年的問題,在 C# 我們有更優雅的做法。

...繼續閱讀 »

[小菜一碟] 手動為 Windows Form 應用程式加入組態設定轉換(Configuration Transform)

有開發過 ASP.NET 網頁應用程式的朋友,應該對 Web.ConfigWeb.Debug.ConfigWeb.Release.Config 這三個設定檔不陌生,在建置專案的時候,建置程序會依據組態(Debug|Release)進行設定轉換,產出專屬於該組態的 Web.Config,如果換作是 Windows Form 應用程式的 App.Config 的話,該怎麼做?

...繼續閱讀 »

[食譜好菜] 用 C# 來實作 B+Tree(B Plus Tree)資料結構

上一篇文章我們介紹了 B-Tree,接下來要介紹它的兄弟 - B+Tree,承襲 B-Tree 的特性,B+Tree 一樣是自平衡樹,搜尋的複雜度一樣也是可以穩定在 O(log n),原則也都一樣,唯一不同的是 B+Tree 的葉節點會有全部的索引鍵,可想而知,這會多使用一些空間,但是換來的是,在做範圍搜尋的時候可以掃瞄葉子節點就好。

...繼續閱讀 »

[小菜一碟] .NET Framework 能不能用新版 System.Text.Json 的 JsonNode、JsonObject、JsonArray、JsonValue?

  • 1241
  • 0
  • C#
  • 2022-09-22

以往在 Json.NETJTokenJObjectJArrayJValue 這些類別,可以讓我們在反序列化 JSON 的時候,不必一定要為其結構新增對應的型別,2021 年 11 月 .NET 6 釋出之後,內建的 System.Text.Json 也隨之升級,增加了 JsonNodeJsonObjectJsonArrayJsonValue,與 Json.NET 的那四個類別相對應,那我想要在 .NET Framework 使用 System.Text.Json 行不行?

...繼續閱讀 »

[食譜好菜] 在 C# 中能將集合轉化為一切的擴充函式 - Aggregate

如果有一天,微軟讓大家在 C# 裡面 Enumerable 眾多的擴充函式當中選一個留下來,我想我會選 Aggregate(),Aggregate() 算是一個滿萬用的擴充函式,從 .NET Framework 3.5 開始就一直存在,它只有三個多載方法,要額外丟的參數最多也只要三個,結構上算是簡單,但運用起來卻能千變萬化。

...繼續閱讀 »

[食譜好菜] C# 兩個集合的 JOIN,一對一、一對多、單鍵值、多鍵值一次介紹。

不知道各位朋友在 C# 裡面,要將兩個集合 JOIN 起來使用時,是怎麼處理的? 假定我有一個 Employee 類別,有一個 Department 的屬性,Department 的內容需要透過另一個屬性 DepartmentId 到 Department 的集合當中去查找,如果各位朋友習慣上是使用類似下面寫法的話,可以嘗試改用另一種方法。

foreach (var employee in employees)
{
    employee.Department = departments.Single(dep => dep.Id == employee.DepartmentId);
}
...繼續閱讀 »