91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如惡化自定義函數Expression轉化為sql

發布時間:2021-10-12 13:50:36 來源:億速云 閱讀:145 作者:iii 欄目:編程語言

這篇文章主要介紹“如惡化自定義函數Expression轉化為sql”,在日常操作中,相信很多人在如惡化自定義函數Expression轉化為sql問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如惡化自定義函數Expression轉化為sql”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

      一.首先建立一個建一個擴展類,控制只能允許這些函數出現,如果出現其他函數就直接報異常。

如惡化自定義函數Expression轉化為sql

1  public static class SQLMethods
 2     {
 3         public static bool DB_In<T>(this T t, List<T> list)  // in
 4         {
 5             return true;
 6         }
 7         public static Boolean DB_NotIn<T>(this T t, List<T> list) // not in
 8         {
 9             return true;
10         }
11         public static int DB_Length(this string t)  // len();
12         {
13             return 0;
14         }
15         public static bool DB_Like(this string t, string str) // like
16         {
17             return true;
18         }
19         public static bool DB_NotLike(this string t, string str) // not like 
20         {
21             return true;
22         }
23     }

View Code

   我們要生成sql,那么函數的返回值沒有意思,len() ,like,和not 只能針對字符串類型, in 和not in 可以針對所有類型。

  二.處理不同函數相關的邏輯。

     1.判斷函數所在類的命名空間是否我是我們要求的。

       2.根據函數名處理。出現意外函數拋出異常

    代碼如下"

如惡化自定義函數Expression轉化為sql

1  private string DealMethodsCall(MethodCallExpression m_exp)
 2         {
 3             var k = m_exp;
 4             var g = k.Arguments[0];
 5             /// 控制函數所在類名。
 6             if (k.Method.DeclaringType != typeof(SQLMethods))
 7             {
 8                 throw new Exception("無法識別函數");
 9             }
10             switch (k.Method.Name)
11             {
12                 case "DB_Length":
13                     {
14                         var exp  = k.Arguments[0];
15                         return "LEN(" + DealExpression(exp) + ")";
16                     }
17                 case "DB_In":
18                 case "DB_NotIn":
19                     {
20                         var exp1 = k.Arguments[0];
21                         var exp2 = k.Arguments[1];
22                         string methods = string.Empty;
23                         if (k.Method.Name == "In")
24                         {
25                             methods = " IN ";
26                         }
27                         else
28                         {
29                             methods = " NOT IN ";
30                         }
31                         return DealExpression(exp1) + methods + DealExpression(exp2);
32                     }
33                 case "DB_Like":
34                 case "DB_NotLike":
35                     {
36                         var exp1 = k.Arguments[0];
37                         var exp2 = k.Arguments[1];
38                         string methods = string.Empty;
39                         if (k.Method.Name == "DB_Like")
40                         {
41                             methods = " LIKE ";
42                         }
43                         else
44                         {
45                             methods = " NOT LIKE ";
46                         }
47                         return  DealExpression(exp1) + methods + DealExpression(exp2);
48 
49                     } 
50             }
51             ///   未知的函數
52             throw new Exception("意外的函數");
53         }

處理相關函數

    三. 調試結果

  如惡化自定義函數Expression轉化為sql

到此,關于“如惡化自定義函數Expression轉化為sql”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

廊坊市| 丰台区| 岢岚县| 吴川市| 彭州市| 台山市| 临邑县| 伊金霍洛旗| 南开区| 武汉市| 岑溪市| 宁安市| 弥渡县| 全南县| 蚌埠市| 裕民县| 凭祥市| 濮阳市| 柳河县| 叙永县| 昭平县| 蒲城县| 芜湖县| 肥东县| 浮梁县| 广饶县| 泌阳县| 潮安县| 福建省| 蓬莱市| 屯留县| 咸阳市| 巧家县| 舞阳县| 高安市| 永吉县| 米脂县| 莲花县| 高邮市| 西乡县| 原阳县|