将枚举定义生成SQL中的Case-When-then语句
                        
                            时间:2021-07-01 10:21:17
                            帮助过:2人阅读
							                        
                     
                    
                    
                     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(
"\r\n",
"");
            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(
"\r\n when {0} then ‘{1}‘ ", item.Value, 
string.IsNullOrEmpty(item.Mark) ?
 item.Key : item.Mark);
                }
                else
                {
                    result += 
string.Format(
"\r\n when {0} then ‘{1}‘ ", item.Value, item.Key);
                }
            }
            if (enumInfos != 
null) { result += 
"\r\n else ‘未知枚举‘ end"; }
            this.txtResult.Text =
 result;
        }
    }
    public class EnumInfo
    {
        public string Mark { 
get; 
set; }
        public string Key { 
get; 
set; }
        public string Value { 
get; 
set; }
    }
}
 
将枚举定义生成SQL中的Case-When-then语句
标签: