為自訂物件動態產生LINQ 查詢
在動態決定資料查詢參數的場景中,重新編譯程式碼的需求可能會很大負擔。是否可以避免這種重新編譯並根據外部參數(例如儲存在資料庫中的 XML 結構)動態產生 LINQ 查詢?
要解決此挑戰,請考慮使用表達式樹。下面是一個範例:
var param = Expression.Parameter(typeof(SomeObject), "p"); var exp = Expression.Lambda<Func<SomeObject, bool>>( Expression.Equal( Expression.Property(param, "Name"), Expression.Constant("Bob") ), param ); var query = someObj.Where(exp);
在這個範例中,我們為 SomeObject 類型定義了一個參數「p」。表達式「exp」使用 Property() 方法存取「p」的「Name」屬性,並使用 Equal() 方法將其與常數值「Bob」進行比較。最後,我們建立一個 lambda 表達式,其計算結果為 Func
雖然表達式樹提供了更大的靈活性,但它們使用起來也很複雜。然而,它們提供了一種強大的機制,可以根據外部輸入動態產生 LINQ 查詢。
以上是可以從外部參數動態產生 LINQ 查詢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!