這可能是一個愚蠢的問題,但在這裏。我希望能夠從數據庫VARCHAR列或任何字符串解析的字符串中動態構造一個謂詞< T>。例如,假設在數據庫中的列包含以下字符串:有沒有一種方法可以從包含代碼的字符串中動態定義謂詞體?
return e.SomeStringProperty.Contains("foo");
這些代碼/字符串值將被存儲在數據庫中知道什麼是通用的「E」的可能性能是,知道他們有返回一個布爾值。
string predicateCode = GetCodeFromDatabase();
var allItems = new List<SomeObject>{....};
var filteredItems = allItems.FindAll(delegate(SomeObject e) { predicateCode });
或λ-美化版:那麼,在一個神奇,美妙,奇幻世界中,代碼可能不知道什麼是謂語是,就像執行
var filteredItems = allItems.FindAll(e => [predicateCode]);
我知道這可能永遠是這很簡單,但是有沒有辦法,可能使用Reflection.Emit,從文本中動態創建委託代碼,並將其提供給FindAll < T>(或任何其他匿名/擴展)方法?
不錯,你使這個社區維基,但我找不到任何有關「動態鏈接項目」提供一些背景給你的答案。你可以請添加一個URL? – 2009-02-19 20:51:58
動態Linq的問題(據我所知)是我無法在Predicate中使用任何複雜的非SQL代碼。 「allItems」列表不是源自數據庫的對象,它實際上是一個字符串列表,我希望能夠以各種不在源代碼中定義的方式進行測試。 – 2009-02-19 20:52:01