感谢您阅读我的博客,如果您现在工作、学习累了或者疲惫了,不妨聆听一下音乐,它能够减轻你的疲劳,还能够带给您一种舒适愉悦的心情。如果您认为这篇文章还不错或者有所收获,您可以在页面 右侧和底部 扫描二维码 打赏我,您的鼓励是我继续写作、分享的最大动力!

C#将QueryString参数列表,拼接成Where条件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace ConsoleGetQueryStringDemo
{
    /// <summary>
    ///     C#将QueryString参数列表,拼接成Where条件
    ///     LDH @ 2021-11-17
    /// </summary>
    internal class Program
    {
        private static void Main()
        {
            Console.Title = "C#将QueryString参数列表,拼接成Where条件";

            Method();

            Method2();

            Console.ReadKey();
        }

        /// <summary>
        ///     https://stackoverflow.com/questions/14652402/convert-query-string-array-parameters-into-dictionary-value
        ///     Convert query string array parameters into dictionary value
        ///     LDH @ 2021-11-17
        /// </summary>
        private static void Method()
        {
            var input = "?where[column]=value&where[column2]=value2&orderby[column]=asc&orderby[column2]=desc";
            Console.WriteLine($"原始QueryString:{Environment.NewLine}{input}");
            PrintLine();

            var pattern = @"(?<Type>[^[]+)\[(?<Key>[^]]+)\]=(?<Value>.+)";

            var re = new Regex(pattern);

            var dict = input.Split(new[] {"?", "&"}, StringSplitOptions.RemoveEmptyEntries)
                .Select(s => re.Match(s))
                .GroupBy(m => m.Groups["Type"].Value)
                .ToDictionary(g => g.Key,
                    g => g.ToDictionary(x => x.Groups["Key"].Value,
                        x => x.Groups["Value"].Value));

            foreach (var t in dict.Keys)
            {
                Console.WriteLine("Type: " + t);
                foreach (var k in dict[t].Keys) Console.WriteLine("{0}: {1}", k, dict[t][k]);
            }

            /*
                Type: where
                column: value
                column2: value2
                Type: orderby
                column: asc
                column2: desc
             */

            PrintLine();
        }

        /// <summary>
        ///     QueryString:Customer=DOSILICON&CustPoName=7&CustPoNo=&CustPoVer=1
        ///     拼接为 Where条件
        ///     Customer='DOSILICON' AND CustPoName='7' AND CustPoVer='1'
        /// </summary>
        private static void Method2()
        {
            var input = "Customer=DOSILICON&CustPoName=7&CustPoNo=&CustPoVer=1";
            Console.WriteLine($"原始QueryString:{Environment.NewLine}{input}");
            PrintLine();

            var dic = input.Split(new[] {"&"}, StringSplitOptions.RemoveEmptyEntries);

            var list = new List<string>();

            foreach (var item in dic)
            {
                // 去除无用的参数(值为空的)
                if (item.EndsWith("=")) continue;

                /*
                    Customer=DOSILICON
                    CustPoName=7
                    CustPoVer=1
                 */
                Console.WriteLine(item);

                list.Add(item);
            }

            PrintLine();

            var whereStr = "SELECT * FROM LDH WHERE 1 = 1 AND ";

            foreach (var item in list)
            {
                var index = item.IndexOf('=');
                var sth = item.Substring(0, index) + " = " + "'" + item.Substring(index + 1, item.Length - index - 1) +
                          "'";
                Console.WriteLine(sth);

                whereStr += sth + "";
            }

            PrintLine();

            if (whereStr.EndsWith(""))
            {
                whereStr = whereStr.Trim().TrimEnd('').Replace("", "AND");
                Console.WriteLine($"最终拼接的SQL:{Environment.NewLine}{whereStr}");
            }

            PrintLine();
        }

        private static void PrintLine()
        {
            Console.WriteLine("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
        }
    }
}

 

posted @ 2021-11-17 16:12  Love In Winter  阅读(506)  评论(0)    收藏  举报
作者: LifeDecidesHappiness
出处: http://www.cnblogs.com/LifeDecidesHappiness/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,否则保留追究法律责任的权利,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址 2468881301@qq.com  联系我,非常感谢。
踏实做一个为人民服务的搬运工!
如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能,您的支持和鼓励是我继续写作、分享的最大动力!

点击关注不迷路,让我带你上高速!