我正在创建一个报告引擎。我试图使其更具通用性的一个挑战是试图弄清楚如何为用户提供更多的查询灵活性,这意味着生成自己的以供以后使用,而不是使用我提供的固定集。
例如,假设我有一个Document对象,它有N个Section对象,它有N个Line对象。
在具有更多静态目标的代码中,我可以很容易地获得一个文档列表,其中有一个Section,其中一个Line的值包含一些文本,使用了Documents列表中的where子句和一个lambda表达式。
然而,有很多(几乎无限的)可能的表达式,所以将人们限制在一个子集或者必须将每个可能的路径编码为参数化方法并不是真的可行。
所以问题是,我该如何1)从字符串数据构造一个lambda表达式(意思是我如何有效地向服务器POST一些我可以灵活地转换为表达式的数据)和2)如何保存该表达式以后在DB中使用?
可能只有#1才真正相关,因为如果我可以在POST数据时构造表达式,我可以将该字符串信息存储到数据库并执行相同的过程,但我目前不知道如何完成#1
有什么建议吗?我觉得这在理论上是可行的,但我显然错过了基本的方法。