在上一篇中構思了把查詢子句描述出來的資料結構,那么能否用代碼將其表達出來,如何表達呢?
再次回顧考察,看下面的查詢子句:
Id>1 and Id<10
如上所示,有兩個獨立的條件分別為Id>1 和 Id<10,用一個邏輯運算子 and 連接起來,
再看下面這條,后面也是兩個獨立條件通過運算子or連接,并包在括號里,作為一個整體,
Id>1 and Id<10 and (Name="MyName" or Name="HisName")
可以看到當中包含幾種元素:欄位名稱,邏輯運算子,比較運算子,條件值,資料型別,括號,兩個概念:獨立的條件和由括號包將它們起來的整體,
那么可以設計兩個類來代表獨立條件和條件組,如下所示:
//獨立條件偽代碼:
public class Field
{
public enum Logical {get;set;} //與其它條件之間的邏輯關系
public enum comparer {get;set;} //條件比較符
public Type DataType {get;set;} //資料型別
public string FieldName {get;set;} //欄位名稱
public object QueryValue {get;set;} //條件值
}
由于復雜的查詢的括號是可嵌套的,多重組合的,類似下面的還算簡單的子句:
(dept="mgr" or dept ="bi" ) and(Id>1 and Id<10 and (Name="MyName" or Name="HisName"))
那么條件組里就需要包含獨立條件和條件組,并且可嵌套,即組中有組:
//條件組偽代碼:
public class Block
{
public enum Logical {get;set;} //與其它條件組或獨立條件之間的邏輯關系
public List<Field> Fields {get;}
public List<Block> Blocks {get;}
}
光文字看得似乎容易蒙逼,來張圖或者能輔助理解(圖示僅用來說明分組的層次):

-
至此,把查詢條件用代碼描述出來的構思就暫告一段落了,
-
欲了解更多,挖掘更多,敬待下期分解,
- 隨手點個贊唄!
- 下集預告,,,,,如何得到目標運算式
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/553350.html
標籤:架構設計
上一篇:微服務架構基本原理學習筆記(一)
下一篇:返回列表
