FreeSql (二十四)Linq To Sql 語法使用介紹

原本不支持 IQueryable 主要出于使用習慣的考慮,如果繼承 IQueryable,編寫代碼的智能總會提示出現一堆你不想使用的方法(對不起,我有強迫癥),IQueryable 自身提供了一堆沒法實現的方法,還有外部入侵的擴展方法,嚴重影響編碼體驗。如下圖:

image

原以為必須實現 IQueryable 才可以實現,結果一次驚喜,原來只要有對應的方法就成。

雖然支持了,但是還是推薦使用【鏈式 + lambda】 !!!

特別說明

這次功能更新,ISelect 增加了 5個方法,對【鏈式 + lambda】的用戶可能會造成少許影響,我在注釋上標明了,如下圖:

image

特別是 .Select(),原先沒有支持,該功能與 ToList(a => new Dto{}) 合并實現的。

需要避免一下坑:

  • 如果一定要使用 .Select() 方法,請務必在 .ToList() 之前調用它;

  • 請減少圖中方法在【鏈式 + labmda】模式下的使用;

所有 ISelect 都可以使用 linq to sql,包括 Repository、DbContext;

Where

var t1 = (from a in fsql.Select<Student>()where a.id == item.idselect a
).ToList();

Select(指定字段)

var t1 = (from a in fsql.Select<Student>()where a.id == item.idselect new { a.id }
).ToList();

CaseWhen

var t1 = (from a in fsql.Select<Student>()where a.id == item.idselect new {a.id,a.name,testsub = new {time = a.age > 10 ? "大于" : "小于或等于"}}
).ToList();

Join

var t1 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentIdselect a
).ToList();var t2 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentIdselect new { a.id, bid = b.id }
).ToList();var t3 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentIdwhere a.id == item.idselect new { a.id, bid = b.id }
).ToList();

LeftJoin

var t1 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentId into tempfrom tc in temp.DefaultIfEmpty()select a
).ToList();var t2 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentId into tempfrom tc in temp.DefaultIfEmpty()select new { a.id, bid = tc.id }
).ToList();var t3 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentId into tempfrom tc in temp.DefaultIfEmpty()where a.id == item.idselect new { a.id, bid = tc.id }
).ToList();

From(多表查詢)

var t1 = (from a in fsql.Select<Student>()from b in fsql.Select<School>()where a.id == b.StudentIdselect a
).ToList();var t2 = (from a in fsql.Select<Student>()from b in fsql.Select<School>()where a.id == b.StudentIdselect new { a.id, bid = b.id }
).ToList();var t3 = (from a in fsql.Select<Student>()from b in fsql.Select<School>()where a.id == b.StudentIdwhere a.id == item.idselect new { a.id, bid = b.id }
).ToList();

GroupBy(分組)

var t1 = (from a in fsql.Select<Student>()where a.id == item.idgroup a by new {a.id, a.name } into gselect new {g.Key.id, g.Key.name,cou = g.Count(),avg = g.Avg(g.Value.age),sum = g.Sum(g.Value.age),max = g.Max(g.Value.age),min = g.Min(g.Value.age)}
).ToList();

系列文章導航

  • (一)入門

  • (二)自動遷移實體

  • (三)實體特性

  • (四)實體特性 Fluent Api

  • (五)插入數據

  • (六)批量插入數據

  • (七)插入數據時忽略列

  • (八)插入數據時指定列

  • (九)刪除數據

  • (十)更新數據

  • (十一)更新數據 Where

  • (十二)更新數據時指定列

  • (十三)更新數據時忽略列

  • (十四)批量更新數據

  • (十五)查詢數據

  • (十六)分頁查詢

  • (十七)聯表查詢

  • (十八)導航屬性

  • (十九)多表查詢

  • (二十)多表查詢 WhereCascade

  • (二十一)查詢返回數據

  • (二十二)Dto 映射查詢

  • (二十三)分組、聚合

  • (二十四)Linq To Sql 語法使用介紹

  • (二十五)延時加載

  • (二十六)貪婪加載 Include、IncludeMany、Dto、ToList

  • (二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢

  • (二十八)事務

  • (二十九)Lambda 表達式

  • (三十)讀寫分離

  • (三十一)分區分表

  • (三十二)Aop

  • (三十三)CodeFirst 類型映射

  • (三十四)CodeFirst 遷移說明

  • (三十五)CodeFirst 自定義特性

轉載于:https://www.cnblogs.com/FreeSql/p/11531392.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447735.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

科目三路考需準備事項

科目三是技術性較強的一項&#xff0c;對于科目三我們有更多要準備的東西了&#xff0c;那我們應該準備一些什么&#xff1f;接下來學車啦小編指導新手們路考上車準備事項&#xff1a; 上車準備一 1、環視車輛、確保安全。 2、調整駕駛座。身體坐正&#xff0c;雙手向前伸直&am…

前后端分離工程實現 (VUE、JAVA)、附全部源碼

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 整個工程基本情況簡述&#xff1a; 前端工程語言&#xff1a;vue &#xff08;node.js&#xff09; 后端工程語言&#xff1a;java…

FreeSql (二十五)延時加載

FreeSql 支持導航屬性延時加載&#xff0c;即當我們需要用到的時候才進行加載&#xff08;讀取&#xff09;&#xff0c;支持1對1、多對1、1對多、多對多關系的導航屬性。 當我們希望瀏覽某條訂單信息的時候&#xff0c;才顯示其對應的訂單詳細記錄時&#xff0c;我們希望使用延…

聊聊并發——生產者消費者模式

在并發編程中使用生產者和消費者模式能夠解決絕大多數并發問題。該模式通過平衡生產線程和消費線程的工作能力來提高程序的整體處理數據的速度。 為什么要使用生產者和消費者模式 在線程世界里&#xff0c;生產者就是生產數據的線程&#xff0c;消費者就是消費數據的線程。在…

多個 VUE 前端工程部署設置、nginx 代理配置

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 PS&#xff1a;早期 我只有一個 VUE 前端工程&#xff1a;gentle-vue &#xff0c;加一個 java 后端工程&#xff1a;gentle &#xff0…

FreeSql (二十六)貪婪加載 Include、IncludeMany、Dto、ToList

貪婪加載顧名思議就是把所有要加載的東西一次性讀取。 本節內容為了配合【延時加載】而誕生&#xff0c;貪婪加載和他本該在一起介紹&#xff0c;開發項目的過程中應該雙管齊下&#xff0c;才能寫出高質量的程序。 Dto 映射查詢 Select<Tag>().Limit(10).ToList(a > n…

FreeSql (二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢

有時候&#xff0c;我們希望將寫好的 sql 語句&#xff0c;甚至是存儲過程進行查詢&#xff0c;雖然效率不高&#xff08;有時候并不是效率至上&#xff09;。 巧用AsTable var sql fsql.Select<UserX>().AsTable((a, b) > "(select * from user where clicks &…

解決: 網站訪問報錯 AccessDenied (阿里云 OSS + CDN )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 使用阿里云 OSS服務 CDN 服務后&#xff0c;直接用頂級域名訪問個人站點失敗&#xff0c;報錯如下&#xff1a; <Code>Acces…

二十一世紀Windows簡史

摘要&#xff1a;Windows擁有者超過90%的消費級操作系統市場份額&#xff0c;處于龍頭老大的位置&#xff0c;那其成長的故事是怎么的&#xff1f;ZDNet總結了21世紀Windows的發展史&#xff0c;以及圍繞微軟操作系統發生的事情&#xff0c;不妨一看。 據微軟4月26日的官方通知…

FreeSql (二十八)事務

FreeSql實現了四種數據庫事務的使用方法&#xff0c;臟讀等事務相關方法暫時未提供。主要原因系這些方法各大數據庫、甚至引擎的事務級別五花八門較難統一。 事務用于處理數據的一致性&#xff0c;處于同一個事務中的操作是一個UnitOfWork&#xff0c;要么全部執行成功&#xf…

VUE 項目中引入 json 配置

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 這個寫法還是第一次見到&#xff0c;也不知道是否還有什么環境配置&#xff0c;記錄一下&#xff0c;或許以后什么時候也可以參考&#…

新手課堂之汽車燈光操作及位置

駕考科目三模擬夜間燈光操作你了解多少&#xff1f;汽車燈光該如何操作&#xff1f;下面我們隨眾悅學車網編輯一起來看看吧&#xff01; 科目三考試中&#xff0c;模擬夜間燈光使用是每個學員都要參加的一項考試&#xff0c;那么&#xff0c;汽車燈光包括些什么燈呢&#xff1f…

FreeSql (二十九)Lambda 表達式

FreeSql 支持功能豐富的表達式函數解析&#xff0c;方便程序員在不了解數據庫函數的情況下編寫代碼。這是 FreeSql 非常特色的功能之一&#xff0c;深入細化函數解析盡量做到滿意&#xff0c;所支持的類型基本都可以使用對應的表達式函數&#xff0c;例如 日期、字符串、IN查詢…

Spring注解 @Qualifier 說明、用法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 -------------------------------------------- 我是分隔線 --------------------------------------------------- Qualifier&#xf…

科目三中模擬燈光使用考試常見的錯誤 廣州學車網光大國際駕校學車

夜間駕駛雖是 駕照考試中抽選的內容&#xff0c;但科目三中模擬燈光使用考試&#xff0c;還是要了解一下的。以下列出了考試中常見的錯誤。 1.前照燈非遠光狀態&#xff0c;聽到“請將前照燈變換成遠光”指令&#xff0c;不變換或變換錯誤的或者前照燈在遠光狀態下&#xff0c;…

FreeSql (三十)讀寫分離

FreeSql 支持數據庫讀寫分離&#xff0c;本功能是客戶端的讀寫分離行為&#xff0c;數據庫服務器該怎么配置仍然那樣配置&#xff0c;不受本功能影響&#xff0c;為了方便描術后面講到的【讀寫分離】都是指客戶端的功能支持。 各種數據庫的讀寫方案不一&#xff0c;數據庫端開啟…

把 excel 表中的數據 批量修改到指定數據庫表中、根據 excel 表中數據修改數據庫表中數據

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 收到一張 excel 表&#xff0c;要求根據 “轉賬時間”一列的值批量修改數據庫表中 "放款時間"一列的值。 2. 寫出 sql 模…

科?目?三?智?能?考?試?系?統?實?際?道?路?考?試?項?目?評?判?標?準

科目三智能考試系統是將公安部實際道路考試項目評判標準加以量化&#xff0c;重點考學員的駕駛技能、安全意識及文明駕車的理念&#xff0c;并將其融入 各個考試項目之中。 二考試技術指標 1、上車準備 考試開始后&#xff0c;學員應當根據考試員發出的“上車準備”指令后…

FreeSql (三十一)分區分表

分區 分區就是把一個數據表的文件和索引分散存儲在不同的物理文件中。把一張表的數據分成N多個區塊&#xff0c;這些區塊可以在同一個磁盤上&#xff0c;也可以在不同的磁盤上&#xff0c;數據庫不同實現方式有所不同。 與分表不同&#xff0c;一張大表進行分區后&#xff0c;他…

FreeSql (三十二)Aop

FreeSql AOP 已有的功能介紹&#xff0c;未來為會根據用戶需求不斷增強。 審計 CRUD 馬云說過&#xff0c;996是修福報。對于多數程序員來說&#xff0c;加班是好事。。。起碼不是閑人&#xff0c;不會下崗。 當如果因為某個 sql 騷操作耗時很高&#xff0c;沒有一個相關的審計…