将枚举定义生成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语句
标签: