标签:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication21
{
public interface IFilterGroupSQL
{
string SetGroupJoinSQL(String sql);
}
public class CountPartyUnion : IFilterGroupSQL
{
public string SetGroupJoinSQL(string sql)
{
sql += " CountPartyUnionSQL union ";
return sql;
}
}
public class BusinessUnitUnion : IFilterGroupSQL
{
public string SetGroupJoinSQL(string sql)
{
sql += " BusinessUnitSQL union ";
return sql;
}
}
public class BusinessUnitUnion1 : IFilterGroupSQL
{
public string SetGroupJoinSQL(string sql)
{
sql += " BusinessUnitSQL1 union ";
return sql;
}
}
public class TraderUnion : IFilterGroupSQL
{
public string SetGroupJoinSQL(string sql)
{
sql += " TraderUnionSQL union ";
return sql;
}
}
public class TraderUnion1 : IFilterGroupSQL
{
public string SetGroupJoinSQL(string sql)
{
sql += " TraderUnionSQL1 union ";
return sql;
}
}
public class FilterGroupChain
{
public IList<IFilterGroupSQL> filterChains = new List<IFilterGroupSQL>();
public FilterGroupChain AddFilterGroupChain(IFilterGroupSQL filter)
{
filterChains.Add(filter);
return this;
}
public string SetGroupJoinSQL()
{
string s = string.Empty;
List<string> strList = new List<string>();
foreach (var f in filterChains)
{
s = f.SetGroupJoinSQL(s);
}
s = Regex.Replace(s, @"(\w*)(union\s)$", ReplaceMethod);
return s;
}
private string ReplaceMethod(Match match)
{
string s = "";
s = match.Groups[1].ToString();
return s;
}
}
;
class Program
{
static void Main(string[] args)
{
FilterGroupChain filterGroupChain=new FilterGroupChain();
filterGroupChain.AddFilterGroupChain(new CountPartyUnion())
.AddFilterGroupChain(new BusinessUnitUnion())
.AddFilterGroupChain(new TraderUnion())
.AddFilterGroupChain(new TraderUnion1())
.AddFilterGroupChain(new BusinessUnitUnion1());
string s= filterGroupChain.SetGroupJoinSQL();
Console.WriteLine(s);
Console.Read();
}
}
}
标签:
原文地址:http://www.cnblogs.com/kexb/p/4513161.html