平時在使用 LINQ 時 Where 裡面的內容就是表達式:
我們可以使用 Expression 來描述程式碼邏輯、將表達式抽取出來,方便我們動態的處理:
如果是 Queryable 就可以直接塞入 expression ,如果是 List 等,就需要經過 Compile() :
文章撰寫中...請稍後...
參考資料:
Microsoft.Learn - Expression Class
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
感謝教學~
回覆刪除