我實際上在這裏看看是否有人做了這個,所以我不必。到目前爲止沒有運氣。但是,除了我的頭頂,你可能想要看的是某種形式的規則引擎,它將評估目標字符串的狀態並添加各種標準。
現在我甚至還沒有開始研究MDX的語法。我不是那麼遠,但如果我想創建一個引擎來創建SQL查詢,我會看看部分(最簡單的情況下),你需要列的列表,一個表和where子句列表。所以你可以有三個或者只是兩個基本的引擎類,它們需要一個字符串列表(或者更好的是一個表達式列表)並且將它們連接起來(或者對它們進行評估然後連接它們)。如果目標字符串爲空,那麼targetString =「select」+ x else targetString =「,」+ x。然後用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,所以你不得不用這個作爲比喻。
最後的想法不要使用窗口工作流程。你會想在一半的時間內殺死自己,如果你一直這樣做,那麼將來會有開發者詛咒你的名字多年。
好運
哦,如果你建立了請開源的,並告訴我,讓我沒有做到這一點。