【发布时间】:2012-04-29 23:35:11
【问题描述】:
我正在创建一个报告引擎。我试图使其更通用的挑战之一是试图弄清楚如何为用户的查询提供更大的灵活性,这意味着生成自己的查询以供以后使用,而不是使用我提供的固定集合。
例如,假设我有一个 Document 对象,它有 N 个 Section 对象,其中有 N 个 Line 对象。
在具有更多静态目标的代码中,我可以使用文档列表上的 where 子句和 lambda 表达式轻松获取文档列表,其中有一个 Section 具有一个 Line 的值包含一些文本。
但是,有很多(几乎无限)可能的表达方式,因此将人们限制在一个子集或必须将每个可能的路径编码为参数化方法实际上并不可行。
所以问题是,我该怎么做 1) 从字符串数据构造一个 lambda 表达式(这意味着我如何有效地向服务器发布一些可以灵活转换为表达式的数据)和 2) 我如何保存该表达式以后在数据库中使用?
可能只有 #1 是真正相关的,因为如果我可以在 POST 数据时构造表达式,我可以将该字符串信息存储到数据库并执行相同的过程,但我目前不知道如何完成 #1
有什么建议吗?我觉得这在理论上是可行的,但我显然缺少基本方法。
【问题讨论】:
-
同样的问题,但对于 Where 子句:stackoverflow.com/questions/125400/generic-linq-query-predicate