假設我有以下LambdaExpression:我可以使用LINQ Expressions參數化PropertyExpression的屬性名稱嗎?
我在Expression.Property(...)的工廠是一個參數需要的屬性名稱(第二個參數),我怎麼會去這樣做?
我希望看到一個構造函數看起來像這樣,但它不存在:
Expresssion.Property(Expression instance, Expression propName)
有一些技巧,我可以拉,可以參數化的常量表達式轉換成所需的字符串或的MemberInfo?也許我正在以這種錯誤的方式去做。
我的直覺是因爲這些表達式樹,在編譯時,成爲輕量IL,該成員訪問信息是必需的,因此,必須構建表達樹木時被提供成員和屬性的名稱。
感謝任何提示!
編輯:希望補充一點,這將用作Enumerable.Where(...)擴展方法的參數,用於確定兩個類/實體之間的關係的匹配。
你有什麼計劃用所得的表達呢?您是否計劃將其發送給EF/LINQ2? –
dasblinkenlight
2012-01-11 17:17:36
實際上,它是用來解決通過用戶定義鍵的實體引用......但最終還是可以由IQueryable的提供商,我們必須加以利用。 :) – 2012-01-11 19:15:55
完美的 - 在這種情況下,您的查詢提供可以尋找您的輔助函數(見我的回答如下),並相應地做它的魔力。我假定搜索由字符串名稱標識的屬性的功能已內置到您的查詢提供程序中。 – dasblinkenlight 2012-01-11 19:20:33