using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Models
{
public enum EnumExpression
{
///
/// 相似
///
like=1,
///
/// 包含
///
In=2,
}
public class EExpression
{
public EExpression(string data, string operation, string checkData)
{
this.Data = data;
this.Operation = operation;
this.CheckData = checkData;
}
public EExpression(string data, string operation, int checkData)
{
this.Data = data;
this.Operation = operation;
this.CheckData = checkData;
}
public EExpression(string data, EnumExpression operation, string checkData)
{
this.Data = data;
this.Operation = operation;
this.CheckData = checkData;
}
public EExpression(string data, EnumExpression operation, List checkData)
{
this.Data = data;
this.Operation = operation;
this.CheckData = checkData;
}
public EExpression(string data, EnumExpression operation, List checkData)
{
this.Data = data;
this.Operation = operation;
this.CheckData = checkData;
}
private Object Data { get; set; }
private object Operation { get; set; }
private Object CheckData { get; set; }
///
/// 返回例子: "2 > 1";
///
///
public string GetSql()
{
string sql = string.Empty;
if (CheckData.GetType()==typeof(int)&& Operation.GetType() == typeof(string))
{
sql= string.Format("{0} {1}{2}", Data, Operation, CheckData);
}
else if (CheckData.GetType() == typeof(string)&& Operation.GetType() == typeof(string))
{
sql= string.Format("{0} {1}'{2}'", Data, Operation, CheckData);
}
else if (Operation.GetType() == typeof(EnumExpression))
{
if (((EnumExpression)Operation)==EnumExpression.like)
{
sql = string.Format("{0} like '{1}'", Data, CheckData);
}
if (((EnumExpression)Operation) == EnumExpression.In)
{
if (CheckData.GetType()==typeof(List))
{
var data = CheckData as List;
sql = string.Format("{0} in ({1})", Data, string.Join(",", data));
}
else if (CheckData.GetType() == typeof(List))
{
List data = CheckData as List;
List sqllist = new List();
for (int i = 0; i < data.Count; i++)
{
sqllist.Add("'" + data[i] + "'") ;
}
sql = string.Format("{0} in ({1}) ", Data, string.Join(",", sqllist));
}
}
}
return sql;
}
}
}