日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Atitit.数据操作dsl 的设计 ---linq 方案

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Atitit.数据操作dsl 的设计 ---linq 方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

Atitit.數據操作dsl 的設計 ---linq 方案

?

1.1. sqlapi方式1

1.2. Linq方案與stream方案的選擇,1

1.3. 前綴表達式 vs 中綴表達式1

1.4. 要不要字符串分隔符1

1.5. 盡可能的兼容sql標準2

1.6. 多數據源的支持2

1.7. 結論2

1.8. 最終結果如下2

?

1.1.?sqlapi方式

對于數據操作,目前常用的倆中方案sqlapi方式,api里面又分為linq方案與stream方案。。

?

一下是他們的比較原則上,以人類可讀性為優先。Sql的可讀性是最強的,單他的機器可讀性就是最差的。。。Api方式則相反,易于解析,犧牲了部分人類可讀性,來換取方便的機器解析。。

?

Sql的解析比較困難,不太適合直接作為dsl來使用。。當然如果數據源是數據庫的話,已經實現了sql的解析了,就可以使用sql作為dsl來使用了。。如果是其他的數據源比如list,就自己實現解析sql來查詢list,就比較麻煩了。。

?

1.2.?Linq方案與stream方案的選擇,

linqstream的特列。專門化的一種dsl,可讀性更好,類似sql,而sql幾乎作為實際操作的一種標準dsl,符合標準比較好,容易學習。。絕大部分場合下,應該使用linq方式。。

?

部分常見的數據結構,可以特化stream api來用,stream api有著更加靈活和簡便的操作可以對特定操作。

?

作者::??★(attilax)>>>???綽號:老哇的爪子??全名::Attilax?Akbar?Al?Rapanui?阿提拉克斯?阿克巴?阿爾?拉帕努伊??漢字名:艾龍,??EMAIL:1466519819@qq.com

轉載請注明來源:?http://www.cnblogs.com/attilax/

?

?

1.3.?前綴表達式 vs 中綴表達式

Linq的實現模式有倆中,一種是api 前綴表達式模式,此種模式容易解析,單可讀性稍微差點。 ?Api中綴表達式,容易解析,可讀性強,但是,此類模式工作量龐大,一般使用機器生成,會帶來同步維護性問題,放棄。。

?

?

1.4.?要不要字符串分隔符

Sql使用單偏好作為字符串分隔符,其他編程語言使用雙引號,但是帶來連解麻煩的問題。

考慮到可讀性,以及機器解析的需要,反正以及分割的很小單位表達式了,容易解析的,就無需字符串分隔符了。。

?

1.5.?盡可能的兼容sql標準

?

1.6.?多數據源的支持

內存數據,stringlist cachenosql,文件,excel,數據庫等均可以利用linq來查詢與操作

?

?

1.7.?結論

所以折中考慮下,人類可讀性優先考慮,但是開發簡單性也要保證。。最終的比較好的方案就是在大操作上 from where等使用api函數模式,但里面的條件表達式等使用sql模式的文本中綴表達式模式,方便機器解析。。

?

?

?

1.8.?活動發起計劃:

兄弟們,我們聯合起來,搞個linq呀,我們的目標:

---多數據源的支持:內存數據,stringlist cachenosql,文件,excel,數據庫等均可以利用linq來查詢與操作

?

實現思路:先把linq里面的表達式簡單詞法分析,轉換為全部的api函數式前綴表達式結構。構建ast,然后執行語法解析。。即可。。

?

1.9.?最終結果如下

List list=ListUtil.addMapFromStr(name:李明,age:11).addMapFromStr(name:劉利,age:17).toList();

List<Map> result_list= select(name,age).from(list).where(name=李明).and(age>12).orderby(name,age desc);

?

實現思路:先把linq里面的表達式簡單詞法分析,轉換為全部的api函數式前綴表達式結構。構建ast,然后執行語法解析。。即可。。

?

轉載于:https://www.cnblogs.com/attilax/p/5521887.html

總結

以上是生活随笔為你收集整理的Atitit.数据操作dsl 的设计 ---linq 方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。