zoukankan      html  css  js  c++  java
  • 将枚举定义生成SQL中的Case-When-then语句

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text.RegularExpressions;
    
    namespace TestPro
    {
        public partial class CaseWhenSqlGeneration : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void btnOk_Click(object sender, EventArgs e)
            {
                string enumString = this.txtEnum.Text.Trim().Replace("
    ","");
                bool useMark = this.chkUseMark.Enabled;
                string result = string.Empty;
                List<EnumInfo> enumInfos = new List<EnumInfo>();
    
                string regString = "(?:(?:\s*///\s*<summary>)\s*///\s*(?<mark>[\S]*?)(?:\s*///\s*</summary>))*\s*((?<key>[\S]+)\s*=\s*(?<value>[\d]+))";
                Regex regex = new Regex(regString, RegexOptions.None);
    
                MatchCollection matchs = regex.Matches(enumString);
                foreach (Match match in matchs)
                {
                    enumInfos.Add(new EnumInfo
                    {
                        Mark = match.Groups["mark"].Value,
                        Key = match.Groups["key"].Value,
                        Value = match.Groups["value"].Value
                    });
                }
    
                foreach (var item in enumInfos)
                {
                    if (this.chkUseMark.Checked)
                    {
                        result += string.Format("
     when {0} then '{1}' ", item.Value, string.IsNullOrEmpty(item.Mark) ? item.Key : item.Mark);
                    }
                    else
                    {
                        result += string.Format("
     when {0} then '{1}' ", item.Value, item.Key);
                    }
                }
    
                if (enumInfos != null) { result += "
     else '未知枚举' end"; }
                this.txtResult.Text = result;
            }
        }
    
        public class EnumInfo
        {
            public string Mark { get; set; }
            public string Key { get; set; }
            public string Value { get; set; }
        }
    }
  • 相关阅读:
    设计模式—享元模式
    设计模式—观察者模式
    设计模式—桥接模式
    设计模式—代理模式
    设计模式—装饰模式
    设计模式—单例模式
    设计模式—建造者模式
    设计模式—简单工厂
    源码解读—HashTable
    源码解读—HashMap
  • 原文地址:https://www.cnblogs.com/huangzelin/p/4495368.html
Copyright © 2011-2022 走看看