【发布时间】:2009-02-03 13:57:46
【问题描述】:
我正在开发能够将过滤器应用于 LinqDataSource 对象的 Web 自定义控件。它是通用控件,因为它应该与特定类型的对象一起操作。
控件通过以下字段知道它应该操作对象的哪个字段
/// <summary>
/// Method to get compared column from object
/// </summary>
public Expression<Func<T, int>> GetColumnMethod;
(我转移到从对象类型中获取适当字段的方法)
我们用这样的代码进行过滤
... if (selectedValue == " 方法(c) method(c)
在 LINQ 到 SQL 转换发生之前,一切正常。 然后错误“方法'.....'没有支持的SQL转换。
当然,CLR 不知道如何为委托创建 SQL。
如果只有 C# 可以在转换为 SQL 之前编译表达式,但我不知道如何做到这一点。
Expression.Compile 之类的变态(无论我尝试了一整天的任何棘手方法 - 我已经无法全部记住它们......没有任何帮助)
但是......在运行时 CLR 已经知道我的对象的类型,因此它可以设法构建具有编译委托值的 SQL 表达式。但是怎么做呢?天知道。
帮助非常感谢。
【问题讨论】: