C# Expression 介紹

平時在使用 LINQ 時 Where 裡面的內容就是表達式:
    
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

var list1 = numbers.Where(x => x > 3).ToList();
Console.WriteLine($"list1: {string.Join(", ", list1)}"); // list1: 4, 5
    

我們可以使用 Expression 來描述程式碼邏輯、將表達式抽取出來,方便我們動態的處理:
    
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

Expression<Func<int, bool>> expression = x => x > 3;
var list2 = numbers.AsQueryable().Where(expression).ToList();
Console.WriteLine($"list2: {string.Join(", ", list2)}"); // list2: 4, 5
    


如果是 Queryable 就可以直接塞入 expression ,如果是 List 等,就需要經過 Compile() :
    
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

Expression<Func<int, bool>> expression = x => x > 3;
var list2 = numbers.Where(expression.Compile()).ToList();
Console.WriteLine($"list2: {string.Join(", ", list2)}"); // list2: 4, 5
    


文章撰寫中...請稍後...

參考資料:
Microsoft.Learn - Expression Class

留言

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com