匿名類別(Anonymous types)是一種暫存型的資料型別,不需要額外建立類別就可以存放不同類型的資料
假設我們有個 User 類別
我們想要把 users 這個清單的資料依照年紀篩選,只要 18 歳以上的、依照 Id 排序。我們只需要 Name 和 Age 欄位,我們就可以使用匿名類別,將資料暫存,供後續使用。
匿名類型和我們上次提到的 C# record(紀錄) 一樣,都有針對屬性顯示最佳化的 ToString 方法,會輸出方便查看屬性的格式
參考資料:
Microsoft.Learn - Anonymous types
Microsoft.Learn - Choosing between anonymous and tuple types
- 需要使用 var 宣告
- 屬性是公開的(public)
- 屬性是唯獨的,建立後不能修改
假設我們有個 User 類別
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
我們想要把 users 這個清單的資料依照年紀篩選,只要 18 歳以上的、依照 Id 排序。我們只需要 Name 和 Age 欄位,我們就可以使用匿名類別,將資料暫存,供後續使用。
var users = new List<User>
{
new User { Id = 1, Name = "Ruyut", Age = 20 },
new User { Id = 2, Name = "小明", Age = 19 },
new User { Id = 3, Name = "大頭", Age = 18 },
new User { Id = 4, Name = "老王", Age = 17 },
};
var result = users
.Where(x => x.Age >= 18)
.OrderBy(x => x.Id)
.Select(x => new { x.Name, x.Age })
.ToList();
foreach (var item in result)
{
Console.WriteLine($"Name: {item.Name}, Age: {item.Age}");
}
// Name: Ruyut, Age: 20
// Name: 小明, Age: 19
// Name: 大頭, Age: 18
匿名類型和我們上次提到的 C# record(紀錄) 一樣,都有針對屬性顯示最佳化的 ToString 方法,會輸出方便查看屬性的格式
var data = new { Id = 1, Name = "Ruyut" };
Console.WriteLine($"data: {data}"); // data: { Id = 1, Name = Ruyut }
參考資料:
Microsoft.Learn - Anonymous types
Microsoft.Learn - Choosing between anonymous and tuple types
感謝教學~
回覆刪除