官方文件上有提到,要確保回傳資料集排序一定要下 Order By
星期四, 4月 29, 2021
[SQL] Order By 排序
系統升級後接到使用者回報,單據資料排序亂掉導致搜尋困難,原本是 ABCD,但卻變成 ADCB,查 AP 發現撈資料時並沒有下 Order By,導致回傳的資料排序不如預期
星期二, 4月 20, 2021
星期三, 4月 14, 2021
[C#] .NET Framework 預設 C# 版本
build .NET Freamework 專案時發現在 debug mode 不會出現的錯誤,在 release mode 都會跑出來,好在錯誤訊息明確,快速就定位
檢查該 Project 內的 C# 版本發現,原來 debug mode 被修正為 lastest,而 release mode 還是維持在預設的 7.3,Orz
錯誤 CS8370 在 C# 7.3 中無法使用 '目標型別條件運算式' 功能。請使用語言版本 9.0 或更高的版本。
星期一, 4月 05, 2021
[C#] IEquatable<T>
搞清楚 IEquatable<T> 觀念和使用
手動建立的 User Class 只包含兩個 Property
勾選 [IEquatable<User>] 選項
產生完整的 User Class Code
VS 快捷鍵可以快速 override Equals 和 GetHashCode Method
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在 class 上使用 Alt + Enter 就可以看見快捷功能,選擇 [產生 Equals 與 GetHashCode]勾選 [IEquatable<User>] 選項
產生完整的 User Class Code
public class User : IEquatable<User>
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as User);
}
public bool Equals(User other)
{
return other != null &&
FirstName == other.FirstName &&
LastName == other.LastName;
}
public override int GetHashCode()
{
// VS 自動產生
int hashCode = 1938039292;
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(FirstName);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(LastName);
return hashCode;
// 查資料時發現,下列寫法比較常見
return FirstName.GetHashCode() ^ LastName.GetHashCode();
}
}
Demo 範例
using System;
namespace IEquatableSample
{
class Program
{
static void Main(string[] args)
{
User UserA = new User
{
LastName = "姓",
FirstName = "名"
};
User UserB = new User
{
LastName = "姓",
FirstName = "名"
};
Console.WriteLine($"UserA == UserB:{UserA == UserB}");
Console.WriteLine($"UserA.Equals(UserB):{UserA.Equals(UserB)}");
}
}
}
結果
![[SQL] 資料收集-1](https://live.staticflickr.com/65535/51126907573_cff167ea9e.jpg)
![[SQL] 資料收集-2](https://live.staticflickr.com/65535/51126652931_c49a446c0e_z.jpg)
![[SQL] 資料收集-3](https://live.staticflickr.com/65535/51127768770_87cb3e7739_z.jpg)
![[SQL] 資料收集-4](https://live.staticflickr.com/65535/51126692722_d0572e00a2_z.jpg)
![[SQL] 資料收集-5](https://live.staticflickr.com/65535/51126711044_b6b9dd915f_z.jpg)
![[SQL] 資料收集-6](https://live.staticflickr.com/65535/51126652876_da41f0a5f8_z.jpg)
![[SQL] 資料收集-7](https://live.staticflickr.com/65535/51126652871_bb81ff7afa_z.jpg)
![[SQL] 資料收集-8](https://live.staticflickr.com/65535/51126652866_d4108134b6_m.jpg)
![[C#] .NET Framework 預設 C# 版本-2](https://live.staticflickr.com/65535/51115406000_5650e67f24_z.jpg)
![[C#] .NET Framework 預設 C# 版本-1](https://live.staticflickr.com/65535/51115401105_b72afb1535_z.jpg)
![[C#] IEquatable-1](https://live.staticflickr.com/65535/51095915165_b7cf5bf86c_z.jpg)
![[C#] IEquatable-2](https://live.staticflickr.com/65535/51095113981_35d6208fc3_w.jpg)
![[C#] IEquatable-3](https://live.staticflickr.com/65535/51095208727_2a985cde3d_w.jpg)