using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Runtime.Serialization;
|
using System.Text;
|
|
namespace IStation
|
{
|
/// <summary>
|
/// Sql条件类
|
/// </summary>
|
[DataContract]
|
[Serializable]
|
public class SqlCondition
|
{
|
|
/// <summary>
|
/// 条件类型
|
/// </summary>
|
[DataMember]
|
public int ConditionType { get; set; }
|
|
/// <summary>
|
/// 前缀类型
|
/// </summary>
|
[DataMember]
|
public int Prefix { get; set; }
|
|
/// <summary>
|
/// 数据类型
|
/// </summary>
|
[DataMember]
|
public int DataType { get; set; }
|
|
/// <summary>
|
/// 属性名称
|
/// </summary>
|
[DataMember]
|
public string PropName { get; set; }
|
|
/// <summary>
|
/// 数据
|
/// </summary>
|
[DataMember]
|
public List<string> Data { get; set; }
|
|
/// <summary>
|
/// 排序码
|
/// </summary>
|
[DataMember]
|
public int SortCode { get; set; }
|
|
/// <summary>
|
/// 参数名称列表
|
/// </summary>
|
internal List<string> Parameters { get; set; }
|
|
|
|
//普通条件设置
|
private void SetGeneralCondition(eSqlConditionType conditionType, string propName, object data, eSqlDataType dataType= eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)conditionType;
|
this.PropName = propName;
|
this.Data = new List<string>() { Convert.ToString(data) };
|
this.DataType = (int)dataType;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 Equals
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetEqualsCondition(string propName, object data, eSqlDataType dataType= eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.SetGeneralCondition(eSqlConditionType.Equals,propName,data,dataType,prefix);
|
}
|
|
/// <summary>
|
/// 设置 NotEquals
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetNotEqualsCondition(string propName, object data, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.SetGeneralCondition(eSqlConditionType.NotEquals,propName,data,dataType,prefix);
|
}
|
|
/// <summary>
|
/// 设置 GreaterThan
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetGreaterThanCondition(string propName, object data, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.SetGeneralCondition(eSqlConditionType.GreaterThan, propName, data, dataType, prefix);
|
}
|
|
/// <summary>
|
/// 设置 GreaterThanOrEqual
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetGreaterThanOrEqualCondition(string propName, object data, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.SetGeneralCondition(eSqlConditionType.GreaterThanOrEqual, propName, data, dataType, prefix);
|
}
|
|
/// <summary>
|
/// 设置 LessThan
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetLessThanCondition(string propName, object data, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.SetGeneralCondition(eSqlConditionType.LessThan, propName, data, dataType, prefix);
|
}
|
|
/// <summary>
|
/// 设置 LessThanOrEqual
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetLessThanOrEqualCondition(string propName, object data, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.SetGeneralCondition(eSqlConditionType.LessThanOrEqual, propName, data, dataType, prefix);
|
}
|
|
/// <summary>
|
/// 设置 In
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="propValue"></param>
|
public void SetInCondition(string propName, List<object> data, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.In;
|
this.PropName = propName;
|
this.Data = data.Select(x => Convert.ToString(x)).ToList();
|
this.DataType = (int)dataType;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 Contains
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetContainsCondition(string propName, string data, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.Contains;
|
this.PropName = propName;
|
this.Data = new List<string>() { data };
|
this.DataType = (int)eSqlDataType.String;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 StartsWith
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetStartsWithCondition(string propName, string data, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.StartsWith;
|
this.PropName = propName;
|
this.Data = new List<string>() { data };
|
this.DataType = (int)eSqlDataType.String;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 EndsWith
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="data"></param>
|
public void SetEndsWithCondition(string propName, string data, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.EndsWith;
|
this.PropName = propName;
|
this.Data = new List<string>() { data };
|
this.DataType = (int)eSqlDataType.String;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 IsNull
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="propName"></param>
|
public void SetIsNullCondition(string propName, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.IsNull;
|
this.PropName = propName;
|
this.Data = null;
|
this.DataType = (int)eSqlDataType.String;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 IsNotNull
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="propName"></param>
|
public void SetIsNotNullCondition(string propName, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.IsNotNull;
|
this.PropName = propName;
|
this.Data = null;
|
this.DataType = (int)eSqlDataType.String;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 Between
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="firstValue"></param>
|
/// <param name="secondValue"></param>
|
public void SetBetweenCondition(string propName, object firstValue, object secondValue, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.Between;
|
this.PropName = propName;
|
this.Data = new List<string>() { Convert.ToString(firstValue), Convert.ToString(secondValue) };
|
this.DataType = (int)dataType;
|
this.Prefix = (int)prefix;
|
}
|
|
/// <summary>
|
/// 设置 NotBetween
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="dataType"></param>
|
/// <param name="propName"></param>
|
/// <param name="firstValue"></param>
|
/// <param name="secondValue"></param>
|
public void SetNotBetweenCondition(string propName, object firstValue, object secondValue, eSqlDataType dataType = eSqlDataType.String, eSqlConditionPrefix prefix = eSqlConditionPrefix.And)
|
{
|
this.ConditionType = (int)eSqlConditionType.NotBetween;
|
this.PropName = propName;
|
this.Data = new List<string>() { Convert.ToString(firstValue), Convert.ToString(secondValue) };
|
this.DataType = (int)dataType;
|
this.Prefix = (int)prefix;
|
}
|
|
|
}
|
}
|