我從字符串中創建基於Lambda的Linq表達式時遇到了一些困難。下面是我用這個樣本對象/類的基本情況:如何從C#中的字符串創建基於動態lambda的Linq表達式?
public class MockClass
{
public string CreateBy { get; set; }
}
基本上我需要一個像這樣的字符串轉換:
string stringToConvert = 「x => x.CreateBy.Equals(filter.Value, StringComparison.OrdinalIgnoreCase」;
進入一個以謂詞/ LINQ表達式:
System.Linq.Expressions.Expression<Func<T, bool>> or in this example
System.Linq.Expressions.Expression<Func<MockClass, bool>>
因此它相當於下面Where方法中的Linq表達式:
query = query.Where(x => x.CreateBy.Equals(filter.Value,
StringComparison.OrdinalIgnoreCase));
我試過使用下面的助手,但似乎無法弄清楚如何讓他們在這種類型的情況下工作,我想能夠建立一個linq表達式從字符串,不知道提前: http://www.albahari.com/nutshell/predicatebuilder.aspx
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx(它現在可以作爲NuGet包以及被稱爲「DynamicQuery」)
爲什麼要將表達式放在字符串中?用戶是否輸入該表達式?將它保存在適當的類型中。 – 2012-04-11 22:28:13
非開發人員用戶正在動態地輸入查詢語法,該查詢語法與在查詢字符串中傳遞的搜索語法相似,然後需要最終完成所有這些操作,例如,當它可以是大量類型和嵌套類型的任何屬性或子屬性時,獲取正確的類型會更困難。 – jon333 2012-04-12 21:51:54