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