在 C# 的 LINQ 中應該很常看到類似下面的程式碼:
其中在呼叫 Where, Select, OrderBy, ToList 方法的是在同一行完成,並沒有分號(;)中斷。這是因為在每個方法中都回傳自己(this),就可以再次呼叫自己可以使用的方法。這種作法又稱為鍊式呼叫。
實作:
var dict = new Dictionary<string, string>()
{
{ "k1", "v1" },
{ "k2", "v2" },
{ "k3", "v3" },
};
var query = dict
.Where(x=>x.Key != "k1")
.Select(x=>x.Value)
.OrderBy(x=>x)
.ToList();
// query: v2, v3
其中在呼叫 Where, Select, OrderBy, ToList 方法的是在同一行完成,並沒有分號(;)中斷。這是因為在每個方法中都回傳自己(this),就可以再次呼叫自己可以使用的方法。這種作法又稱為鍊式呼叫。
實作:
MyClass myClass = new();
myClass
.SetId(1)
.SetName("test");
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
// Fluent API
public MyClass SetId(int id)
{
Id = id;
return this;
}
public MyClass SetName(string name)
{
Name = name;
return this;
}
}
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com