MyDAL - in && not in 條件 使用

来源:https://www.cnblogs.com/Meng-NET/archive/2019/03/04/10470504.html
-Advertisement-
Play Games

索引: 目錄索引 一.API 列表 C# 代碼中 介面 IList.Contains() 方法生成 SQL 對應的 in(val1,val2,... ...) 如:.Queryer<Agent>() ... ... .Where(it => new AgentLevel?[] { AgentLeve ...


索引:

目錄索引

一.API 列表

  C# 代碼中 介面 IList.Contains() 方法生成 SQL 對應的 in(val1,val2,... ...)

     如:.Queryer<Agent>()

      ... ...

      .Where(it => new AgentLevel?[] { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(it.AgentLevel))

      ... ... 用於 單表 in 條件

      .Queryer(out Agent agent, out AgentInventoryRecord record)

      ... ...

      .Where(() => !new AgentLevel?[] { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(agent.AgentLevel))

      ... ... 用於 多表連接 in 條件

 二.API 單表-便捷 方法 舉例

  1. in 條件

1 var res2 = await Conn
2     .QueryListAsync<Agent>(it => new List<AgentLevel?> { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(it.AgentLevel));

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `AgentLevel`  in (@AgentLevel_2,@AgentLevel_3);

  2. not in 條件

1 var res2 = await Conn
2     .QueryListAsync<Agent>(it => !new List<AgentLevel?> { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(it.AgentLevel));

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `AgentLevel`  not in (@AgentLevel_2,@AgentLevel_3);

三.API 單表-完整 方法 舉例

  1. in 條件

1             var res5 = await Conn
2                 .Queryer<Agent>()
3                 .Where(it => new List<string> { "黃銀鳳", "劉建芬" }.Contains(it.Name))
4                 .QueryListAsync();

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `Name`  in (@Name_2,@Name_3);

  2. not in 條件

1             var res5 = await Conn
2                 .Queryer<Agent>()
3                 .Where(it => !new List<string> { "黃銀鳳", "劉建芬" }.Contains(it.Name))
4                 .QueryListAsync();

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `Name`  not in (@Name_2,@Name_3);

四.API 多表連接-完整 方法 舉例

  1. in 條件

1             var res1 = await Conn
2                 .Queryer(out Agent agent, out AgentInventoryRecord record)
3                 .From(() => agent)
4                     .InnerJoin(() => record)
5                         .On(() => agent.Id == record.AgentId)
6                 .Where(() => new AgentLevel?[] { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(agent.AgentLevel))
7                 .QueryListAsync<Agent>();

    生成 SQL 如下

1 select agent.`*`
2 from `agent` as agent 
3     inner join `agentinventoryrecord` as record
4         on agent.`Id`=record.`AgentId`
5 where  agent.`AgentLevel`  in (@AgentLevel_5,@AgentLevel_6);

  2. not in 條件

1             var res1 = await Conn
2                 .Queryer(out Agent agent, out AgentInventoryRecord record)
3                 .From(() => agent)
4                     .InnerJoin(() => record)
5                         .On(() => agent.Id == record.AgentId)
6                 .Where(() => !new AgentLevel?[] { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(agent.AgentLevel))
7                 .QueryListAsync<Agent>();

    生成 SQL 如下

1 select agent.`*`
2 from `agent` as agent 
3     inner join `agentinventoryrecord` as record
4         on agent.`Id`=record.`AgentId`
5 where  agent.`AgentLevel`  not in (@AgentLevel_5,@AgentLevel_6);

五.數組 Array 舉例

  1. in 條件

 1             var enumArray = new AgentLevel?[]
 2             {
 3                 AgentLevel.CityAgent,
 4                 AgentLevel.DistiAgent
 5             };
 6 
 7             var res12 = await Conn
 8                 .Queryer<Agent>()
 9                 .Where(it => enumArray.Contains(it.AgentLevel))
10                 .QueryListAsync();

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `AgentLevel`  in (@AgentLevel_2,@AgentLevel_3);

  2. not in 條件

 

1             var res1 = await Conn
2                 .Queryer<Agent>()
3                 .Where(it => !new AgentLevel?[] { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(it.AgentLevel))
4                 .QueryListAsync();

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `AgentLevel`  not in (@AgentLevel_2,@AgentLevel_3);

六.列表 List<T> 舉例

  1. in 條件

 1             var enums = new List<AgentLevel?>
 2             {
 3                 AgentLevel.CityAgent,
 4                 AgentLevel.DistiAgent
 5             };
 6 
 7             var res1 = await Conn
 8                 .Queryer<Agent>()
 9                 .Where(it => enums.Contains(it.AgentLevel))
10                 .QueryListAsync();

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `AgentLevel`  in (@AgentLevel_2,@AgentLevel_3);

  2. not in 條件

1             var res1 = await Conn
2                 .Queryer<Agent>()
3                 .Where(it => !new List<AgentLevel?> { AgentLevel.CityAgent, AgentLevel.DistiAgent }.Contains(it.AgentLevel))
4                 .QueryListAsync();

    生成 SQL 如下

1 select *
2 from `agent`
3 where  `AgentLevel`  not in (@AgentLevel_2,@AgentLevel_3);

 

 

 

                                         蒙

                                    2019-03-04 22:10 周一

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • python shell與反彈shell 正常shell需要先在攻擊端開機情況下開啟程式,然後攻擊端運行程式,才能連接 反彈shell,攻擊端是服務端,被攻擊端是客戶端正常shell,攻擊端是客戶端,被攻擊端是服務端 反彈shell,先啟用服務端,再啟用客戶端 反彈shell的好處就是:一旦被攻擊端 ...
  • 前面介紹了集合與映射兩類容器,它們的共同特點是每個元素都是唯一的,並且採用二叉樹方式的類型還自帶有序性。然而這兩個特點也存在弊端:其一,為啥內部元素必須是唯一的呢?像手機店賣出了兩部Mate20,雖然這兩部手機一模一樣,但理應保存兩條銷售記錄才是。其二,不管是哈希類型還是二叉類型,居然都不允許按照加 ...
  • 【路徑】 絕對路徑:從根目錄開始鏈接的路徑 >cd C:\Windows\Boot\DVD\EFI\en-US 相對路徑:不從根目錄開始鏈接的路徑 > cd Boot\DVD\EFI\en-US Python的文件名是以 .py 結尾的 dir是查看當前目錄下的文件cd 路徑 跳轉到指定路徑cd . ...
  • 作者:石杉的架構筆記 寫在前面 春節長假轉眼已過,即將迎來的是一年一度的金三銀四跳槽季。 假如你準備在金三銀四跳槽的話,那麼作為一個Java工程師,應該如何利用1個月的時間,快速的為即將到來的面試進行充分的準備呢? 這兩篇文章,專門站在面試官的角度,給大家分析了平時互聯網公司是如何全方位的考察一個候 ...
  • 1.如果子進程先於父進程退出, 同時父進程又沒有調用wait/waitpid,則該子進程將成為僵屍進程 2.如果fork完就不管了可以使用 忽略子進程信號, 防止僵屍進程 pcntl_signal(SIGCLD, SIG_IGN); 3.如果在主進程中,可以等待子進程的退出 , 這樣也能防止出現僵屍 ...
  • 1、背景:接手公司新項目時,無論用vs2013還是用vs2017都打開不了 2、解決辦法:先把.suo文件刪掉, 結果:vs2013可以打開,vs2017依舊打不開。 3、繼續解決:上網搜了一下,把隱藏的.vs文件夾刪除 結果:完美解決 4、到底與哪一個步驟有關呢?經測試(只刪除.vs文件夾又測試了 ...
  • 通過調用指定目錄下的所有模板,逐一按照數據表生成獨立的代碼文件。支持多模板調用、支持所有數據表生成或批量指定多個生成、支持自動的文件目錄結構、支持代碼文件格式化命名等。 背景:最近一個新項目一高興選了Mysql 8,結果出了好幾個麻煩。 Toad for mysql 連不上了,習慣的動軟代碼生成器也 ...
  • 耗時兩個多月,堅持寫這個入門系列文章,就是想給後來者更好更快的上手體驗,這個系列可以說是從入門到進階,適合沒有 .NETCore 編程經驗到小白同學,也適合從 .NET Framework 遷移到 .NETCore 的朋友。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...