我实际上是在这里看看是否有人这样做,所以我不必这样做。到目前为止没有运气。但是在我的脑海中,您可能想要查看的是某种形式的规则引擎,它将评估目标字符串的状态并添加您的各种标准。
现在我什至还没有开始研究 MDX 的语法。我并没有那么远,但是如果我想创建一个引擎来创建 sql 查询,我会查看部分(首先是最简单的情况),您需要列列表、表和 where 子句列表。因此,您可以拥有三个或可能只有两个基本引擎类,其中一个接受字符串列表和(或更好的是表达式列表)并将它们连接起来(或评估然后连接它们)。如果目标字符串为空,则 targetString = "select "+ x else targetString = ", " + x。然后用 where 表达式做类似的事情。对于实现不同形式的 where 表达式等的构建类,您可以获得更多的幻想。然后最终你会通过你的引擎像
MySqlEngine(new[] {"FirstName", "LastName", "GirlFriendsAddress"},
new []{EqualsExpression("FirstName","Brown"), EqualsExpression("LastName",Dynamite")},
"People");
它会返回
"SELECT FirstName, LastName, GirlFriendsAddress From People Where FirstName = \"Brown\" AND LastName = \"Dynamite\""
我强烈建议使用表达式来评估与您的表匹配的目标模型上的属性。然后,您可以使 MySqlEnigine(...) 不必提供给表名,因为您的模型可以命名相同,并且除了 where 子句的目标值之外,您不使用任何字符串。
我知道这不是您想要的引擎,但我还不知道 MDX,因此您必须将其用作类比。
最后的想法不要使用窗口工作流。你会想半途而废,如果你一直坚持下去,那么未来很多年都会有开发者诅咒你的名字。
祝你好运
哦,如果您构建了请开源它并告诉我,这样我就不必这样做了。